Updated folder names

This commit is contained in:
2017-11-29 12:51:53 -08:00
parent cb3ce5dafc
commit 51b0102711
397 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,20 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Atmel Studio Solution File, Format Version 11.00
Project("{E66E83B9-2572-4076-B26E-6BE79FF3018A}") = "ArmControl", "ArmControl.cppproj", "{1FC16D6E-A0D0-480A-BA3E-D179A1655ABB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|AVR = Debug|AVR
Release|AVR = Release|AVR
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1FC16D6E-A0D0-480A-BA3E-D179A1655ABB}.Debug|AVR.ActiveCfg = Debug|AVR
{1FC16D6E-A0D0-480A-BA3E-D179A1655ABB}.Debug|AVR.Build.0 = Debug|AVR
{1FC16D6E-A0D0-480A-BA3E-D179A1655ABB}.Release|AVR.ActiveCfg = Release|AVR
{1FC16D6E-A0D0-480A-BA3E-D179A1655ABB}.Release|AVR.Build.0 = Release|AVR
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,476 @@
/*
* ArmControl.cpp
*
* Created: 4/22/2014 8:54:20 PM
<<<<<<< HEAD
* Author: NICK!
* PA0 is Step2POT
* PA1 is Step1POT
=======
PB3 = Limit 1 = Grip Limit
PA3 = Limit 2 = Grip Close
PA2 = Limit 3 = Rotation Calibration
* Author: Nick
>>>>>>> 034fb4b9ec9e5b3ad4812938ac8725fedd57e6b0
*/
#define F_CPU 32000000UL
#define MAXTIMEOUT 20
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
extern "C" {
#include "avr_compiler.h"
#include "usart_driver.h"
};
#include "Sabertooth.h"
#include "XMegaMacros.h"
#include "adc.h" //Include the ADC functions
#include "motorInfo.h" //Include the motor information
#include "stepperInfo.h"
#include "rotateStepper.h"
#include "Misc.h"
int swap = 0;
USART_data_t USART_PC_Data;
motorInfo lowerAct;
motorInfo upperAct;
stepperInfo gripStepper;
rotateStepper baseStepper;
#define LOWER 0
#define UPPER 1
#define GRIP 0
#define RELEASE 1
#define GRIP_BM_SERIAL (1 << 1)
volatile bool canAcceptPackets = true;
volatile bool IsPacketToParse = false;
volatile unsigned char ARM_Dock_State = 0;
unsigned char ARM_Dock_State_Prev = 0;
volatile bool ShouldRECAL = 0;
volatile unsigned char bufferIndex = 0;
volatile long unsigned int TimeSinceInit = 0;
long unsigned int TimePrevious = 0;
volatile int v = 0;
#define PACKETSIZE 10
volatile char recieveBuffer[PACKETSIZE];
volatile char SendBuffer[100];
enum { HEADER, COMMAND, BASEROTVAL1, BASEROTVAL2, ACT1VAL1, ACT1VAL2, ACT2VAL1, ACT2VAL2, CHECKSUM, TAIL};
enum XMegaStates{
WaitForHost,
ARMControl
} CurrentState = WaitForHost;
void SetupResetTimer(){
TCD0.CTRLA = TC_CLKSEL_DIV1024_gc; //31250 counts per second with 32Mhz Processor
TCD0.CTRLB = TC_WGMODE_NORMAL_gc;
TCD0.PER = 31250;
TCD0.INTCTRLA = TC_OVFINTLVL_LO_gc;
}
void FlushSerialBuffer(USART_data_t *UsartBuffer){
while(USART_RXBufferData_Available(UsartBuffer)){
USART_RXBuffer_GetByte(UsartBuffer);
}
}
ISR(USARTC0_RXC_vect){
USART_RXComplete(&USART_PC_Data);
if(USART_RXBufferData_Available(&USART_PC_Data)){
recieveBuffer[bufferIndex] = USART_RXBuffer_GetByte(&USART_PC_Data);
bufferIndex++;
}
if((bufferIndex == PACKETSIZE)){
FlushSerialBuffer(&USART_PC_Data);
if(recieveBuffer[8] == (recieveBuffer[1] ^ recieveBuffer[2] ^ recieveBuffer[3] ^ recieveBuffer[4] ^ recieveBuffer[5] ^ recieveBuffer[6] ^ recieveBuffer[7])){
ShouldRECAL = recieveBuffer[1] & 0b00001000;
ARM_Dock_State = recieveBuffer[1] & 0b00000100;
gripStepper.desiredGripState = !(recieveBuffer[1] & GRIP_BM_SERIAL); //0b00000010
baseStepper.desiredPos = (recieveBuffer[3]+recieveBuffer[2]);
lowerAct.setDesired((double(recieveBuffer[5]+recieveBuffer[4]) / double(100)));
upperAct.setDesired((double(recieveBuffer[7]+recieveBuffer[6]) / double(100)));
IsPacketToParse = true;
}else{
while(!USART_IsTXDataRegisterEmpty(&USARTC0));
USART_PutChar(&USARTC0, 255);
while(!USART_IsTXDataRegisterEmpty(&USARTC0));
USART_PutChar(&USARTC0,0); //Checksum failed
while(!USART_IsTXDataRegisterEmpty(&USARTC0));
USART_PutChar(&USARTC0,255);
bufferIndex = 0;
}
}
}
ISR(USARTC0_DRE_vect){
USART_DataRegEmpty(&USART_PC_Data);
}
void SetXMEGA32MhzCalibrated(){
CCP = CCP_IOREG_gc; //Disable register security for oscillator update
OSC.CTRL = OSC_RC32MEN_bm; //Enable 32MHz oscillator
while(!(OSC.STATUS & OSC_RC32MRDY_bm)); //Wait for oscillator to be ready
CCP = CCP_IOREG_gc; //Disable register security for clock update
CLK.CTRL = CLK_SCLKSEL_RC32M_gc; //Switch to 32MHz clock
CCP = CCP_IOREG_gc; //Disable register security for oscillator update
OSC.CTRL |= OSC_RC32KEN_bm; //Enable 32Khz oscillator
while(!(OSC.STATUS & OSC_RC32KRDY_bm)); //Wait for oscillator to be ready
OSC.DFLLCTRL &= ~OSC_RC32MCREF_bm; //Set up calibration source to be 32Khz crystal
DFLLRC32M.CTRL |= DFLL_ENABLE_bm; //Enable calibration of 32Mhz oscillator
}
void SetupPCComms(){
PORTC.DIRSET = PIN3_bm; //Sets TX Pin as output
PORTC.DIRCLR = PIN2_bm; //Sets RX pin as input
USART_InterruptDriver_Initialize(&USART_PC_Data, &USARTC0, USART_DREINTLVL_LO_gc); //Initialize USARTC0 as interrupt driven serial and clear it's buffers
USART_Format_Set(USART_PC_Data.usart, USART_CHSIZE_8BIT_gc, USART_PMODE_DISABLED_gc, false); //Set the data format of 8 bits, no parity, 1 stop bit
USART_RxdInterruptLevel_Set(USART_PC_Data.usart, USART_RXCINTLVL_LO_gc); //Enable the receive interrupt
USART_Baudrate_Set(&USARTC0, 207 , 0); //Set baudrate to 9600 with 32Mhz system clock
USART_Rx_Enable(USART_PC_Data.usart); //Enable receiving over serial
USART_Tx_Enable(USART_PC_Data.usart); //Enable transmitting over serial
PMIC.CTRL |= PMIC_LOLVLEX_bm; //Enable PMIC interrupt level low (No idea what this does, but is necessary)
}
//Motor 1 is Gripper
//Motor 2 is Base Stepper
void DemInitThingsYouBeenDoing(){
SetXMEGA32MhzCalibrated();
SetupPCComms();
SetupResetTimer();
//Setup Status and Error LEDS
PORTC.DIRSET = (PIN5_bm | PIN6_bm | PIN7_bm);
//Setup Outputs
PORTD.DIRSET = (PIN0_bm | PIN1_bm | PIN2_bm | PIN3_bm | PIN4_bm | PIN5_bm | PIN6_bm | PIN7_bm);
PORTA.DIRSET = (PIN5_bm | PIN6_bm | PIN7_bm); //First set of M settings
PORTB.DIRSET = (PIN0_bm | PIN1_bm | PIN2_bm); //Second set of M settings
//Setup Inputs
PORTA.DIRCLR = (PIN2_bm); //Rotation Calibration
PORTA.DIRCLR = (PIN3_bm); //Grip Close
PORTB.DIRCLR = (PIN3_bm); //Grip Limit
PORTA.DIRCLR = (PIN4_bm); //'IsRoving' check
PORTA.PIN3CTRL = PORT_OPC_PULLUP_gc;
PORTB.PIN3CTRL = PORT_OPC_PULLUP_gc;
//GRIP STEPPER is MD1
//SETUP "UPPER" DRIVER
MD1_ENABLE();
//Setup Microstepping
MD1_M0_CLR();
MD1_M1_CLR();
MD1_M2_SET();
MD1_DIR_CLR();
MD1_STEP_CLR();
//BASE STEPPER is MD2
//Motor Driver 2 setup
MD2_ENABLE();
//Setup Microstepping
MD2_M0_SET(); //Small amount of micro stepping is sufficient
MD2_M1_SET();
MD2_M2_CLR();
MD2_DIR_CLR();
MD2_STEP_CLR();
sei();
}
void SendStringPC(char *stufftosend){
for(int i = 0 ; stufftosend[i] != '\0' ; i++){
while(!USART_IsTXDataRegisterEmpty(&USARTC0));
USART_PutChar(&USARTC0, stufftosend[i]);
}
}
//DOCUMENTATION NEEDED :D
double abs(double input){
if(input > 0)
return input;
else
return input * -1;
}
//PA1 is lower act
//If a 0 is passed in, then the lower act is read
//0 = LOWER ACT
//1 = UPPER ACT
int smoothADC(int act){
const int smoothFactor = 7;
int count = 0;
for(int i = 0; i < smoothFactor; ++i){
if(act == LOWER){
count += ReadADC(1,1);
}
else if(act == UPPER) {
count += ReadADC(0,1);
}
_delay_ms(1);
}
return count/smoothFactor;
}
//lowerAct upperAct
void checkActPosition(){
if (abs(lowerAct.currentPos - lowerAct.desiredPos) < lowerAct.acceptableError){
++lowerAct.acceptableCount;
}
else{
lowerAct.acceptableCount = 0;
}
if (abs(upperAct.currentPos - upperAct.desiredPos) < upperAct.acceptableError){
++upperAct.acceptableCount;
}
else{
upperAct.acceptableCount = 0;
}
if(upperAct.acceptableCount >= upperAct.acceptableCountMax){
upperAct.disable();
}
if(lowerAct.acceptableCount >= upperAct.acceptableCountMax){
lowerAct.disable();
}
lowerAct.currentPos = smoothADC(LOWER)/58.13 -.41;
upperAct.currentPos = smoothADC(UPPER)/58.13 -.41;
}
int getMotorSpeed(int act){
if(act == LOWER){
if(abs(lowerAct.currentPos - lowerAct.desiredPos) < lowerAct.slowRange/2)
return lowerAct.speed / 3;
else if(abs(lowerAct.currentPos - lowerAct.desiredPos) < lowerAct.slowRange)
return lowerAct.speed / 2;
else
return lowerAct.speed;
}
else if (act == UPPER){
if(abs(upperAct.currentPos - upperAct.desiredPos) < upperAct.slowRange/2)
return upperAct.speed / 3;
else if(abs(upperAct.currentPos - upperAct.desiredPos) < upperAct.slowRange)
return upperAct.speed / 2;
else
return upperAct.speed;
}
////////
return 0;
}
/*Returns a 1 or a -1, depending on whether the actuator needs to retract
or extend
*/
int getMotorDir(int act){
if(act == LOWER){
if(!lowerAct.enabled)
return 0;
if(lowerAct.currentPos > lowerAct.desiredPos)
return -1;
else
return 1;
}
else if(act == UPPER){
if(!upperAct.enabled)
return 0;
if(upperAct.currentPos > upperAct.desiredPos)
return -1;
else
return 1;
}
/////////
return 0;
}
int main(void)
{
DemInitThingsYouBeenDoing(); //All init moved to nicer spot
_delay_ms(1000);
Sabertooth DriveSaber(&USARTD0, &PORTD);
upperAct.desiredPos = 3.0;
lowerAct.desiredPos = 3.5;
//Wait until rover is unpaused
while(!CHECK_ISROVING());
lowerAct.enable();
upperAct.enable();
/////////////Initial Calibration and Default Positions//////////////////////
while((lowerAct.enabled || upperAct.enabled)){
checkActPosition();
DriveSaber.ParsePacket(127+getMotorSpeed(LOWER)*getMotorDir(LOWER), 127+getMotorSpeed(UPPER)*getMotorDir(UPPER));
while(!CHECK_ISROVING()){
DriveSaber.ParsePacket(127,127);
}
}
baseStepper.calibrateBase();
MD2_DIR_CLR();
baseStepper.rotateBase(0); //Note that this function takes an angle relative
gripStepper.enable(); //to the absolute 0 on the robot
gripStepper.processCommand(RELEASE);
/*
_delay_ms(5000);
gripStepper.enable();
gripStepper.processCommand(GRIP);
*/
///////////////// DEBUG (and not wasting power) purposes!
//MD2_DISABLE();
/////////////////
/////////////Initial Calibration and Default Positions//////////////////////
// sprintf(SendBuffer, "Multiplier: %d \r\n \r\n", (int) baseStepper.multiplier);
// SendStringPC(SendBuffer); //Send Dem Strings
while(1){
if(CurrentState == WaitForHost){
SendStringPC("ID: ArmControl\r\n");
_delay_ms(500);
if(recieveBuffer[0] == 'r'){
CurrentState = ARMControl;
while(!USART_IsTXDataRegisterEmpty(&USARTC0));
USART_PutChar(&USARTC0, 'r');
TimePrevious = TimeSinceInit;
}
bufferIndex = 0;
}else if(CurrentState == ARMControl){
if(IsPacketToParse){
if(ShouldRECAL == true){
upperAct.desiredPos = 3.0;
lowerAct.desiredPos = 3.5;
lowerAct.enable();
upperAct.enable();
/////////////Initial Calibration and Default Positions//////////////////////
while((lowerAct.enabled || upperAct.enabled)){
checkActPosition();
DriveSaber.ParsePacket(127+getMotorSpeed(LOWER)*getMotorDir(LOWER), 127+getMotorSpeed(UPPER)*getMotorDir(UPPER));
while(!CHECK_ISROVING()){
DriveSaber.ParsePacket(127,127);
}
}
baseStepper.calibrateBase();
MD2_DIR_CLR();
baseStepper.rotateBase(0); //Note that this function takes an angle relative
if(gripStepper.desiredGripState){
gripStepper.enable(); //to the absolute 0 on the robot
gripStepper.processCommand(RELEASE);
}
ShouldRECAL = false;
}else{
ERROR_SET(); //Show light when done with actuators
lowerAct.enable(); //Re-enable lower actuator
upperAct.enable(); //Re-enabled lower actuator
baseStepper.rotateBase(baseStepper.desiredPos); //Move base to position
checkActPosition(); //Check once to avoid loop is possible
while(lowerAct.enabled || upperAct.enabled){ //If a motor needs to move, do below
checkActPosition(); //Check positions
DriveSaber.ParsePacket(127+getMotorSpeed(LOWER)*getMotorDir(LOWER), 127+getMotorSpeed(LOWER)*getMotorDir(UPPER)); //Move to position
while(!CHECK_ISROVING()){
DriveSaber.ParsePacket(127,127);
} //e-stop check
} //Exit when done moving
DriveSaber.ParsePacket(127,127); //Stop actuators from moving any more
if((gripStepper.desiredGripState == GRIP)){
gripStepper.enable();
gripStepper.processCommand(GRIP);
}else if(gripStepper.desiredGripState == RELEASE){
gripStepper.enable();
gripStepper.processCommand(RELEASE);
}
}
IsPacketToParse = false;
ERROR_CLR();
while(!USART_IsTXDataRegisterEmpty(&USARTC0));
USART_PutChar(&USARTC0, 255);
while(!USART_IsTXDataRegisterEmpty(&USARTC0));
USART_PutChar(&USARTC0, 0b00000010 | CHECK_GRIP_CLOSE());
while(!USART_IsTXDataRegisterEmpty(&USARTC0));
USART_PutChar(&USARTC0,255);
bufferIndex = 0;
TimePrevious = TimeSinceInit;
}
//if((TimePrevious - TimeSinceInit) > MAXTIMEOUT){
// CurrentState = WaitForHost;
// bufferIndex = 0;
//}
}
}
}
ISR(TCD0_OVF_vect){
TimeSinceInit++;
}

View File

@@ -0,0 +1,177 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>
<ProjectVersion>6.2</ProjectVersion>
<ToolchainName>com.Atmel.AVRGCC8.CPP</ToolchainName>
<ProjectGuid>{1fc16d6e-a0d0-480a-ba3e-d179a1655abb}</ProjectGuid>
<avrdevice>ATxmega32D4</avrdevice>
<avrdeviceseries>none</avrdeviceseries>
<OutputType>Executable</OutputType>
<Language>CPP</Language>
<OutputFileName>$(MSBuildProjectName)</OutputFileName>
<OutputFileExtension>.elf</OutputFileExtension>
<OutputDirectory>$(MSBuildProjectDirectory)\$(Configuration)</OutputDirectory>
<AssemblyName>ArmControl</AssemblyName>
<Name>ArmControl</Name>
<RootNamespace>ArmControl</RootNamespace>
<ToolchainFlavour>Native</ToolchainFlavour>
<KeepTimersRunning>true</KeepTimersRunning>
<OverrideVtor>false</OverrideVtor>
<CacheFlash>true</CacheFlash>
<ProgFlashFromRam>true</ProgFlashFromRam>
<RamSnippetAddress />
<UncachedRange />
<OverrideVtorValue />
<BootSegment>2</BootSegment>
<eraseonlaunchrule>1</eraseonlaunchrule>
<AsfFrameworkConfig>
<framework-data xmlns="">
<options />
<configurations />
<files />
<documentation help="" />
<offline-documentation help="" />
<dependencies>
<content-extension eid="atmel.asf" uuidref="Atmel.ASF" version="3.15.0" />
</dependencies>
</framework-data>
</AsfFrameworkConfig>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<ToolchainSettings>
<AvrGccCpp>
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
<avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcc.compiler.symbols.DefSymbols>
<ListValues>
<Value>NDEBUG</Value>
</ListValues>
</avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.optimization.level>Optimize for size (-Os)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcccpp.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcccpp.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcccpp.compiler.symbols.DefSymbols>
<ListValues>
<Value>NDEBUG</Value>
</ListValues>
</avrgcccpp.compiler.symbols.DefSymbols>
<avrgcccpp.compiler.optimization.level>Optimize for size (-Os)</avrgcccpp.compiler.optimization.level>
<avrgcccpp.compiler.optimization.PackStructureMembers>True</avrgcccpp.compiler.optimization.PackStructureMembers>
<avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcccpp.compiler.warnings.AllWarnings>True</avrgcccpp.compiler.warnings.AllWarnings>
<avrgcccpp.linker.libraries.Libraries>
<ListValues>
<Value>libm</Value>
</ListValues>
</avrgcccpp.linker.libraries.Libraries>
</AvrGccCpp>
</ToolchainSettings>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<ToolchainSettings>
<AvrGccCpp>
<avrgcc.common.outputfiles.hex>True</avrgcc.common.outputfiles.hex>
<avrgcc.common.outputfiles.lss>True</avrgcc.common.outputfiles.lss>
<avrgcc.common.outputfiles.eep>True</avrgcc.common.outputfiles.eep>
<avrgcc.common.outputfiles.srec>True</avrgcc.common.outputfiles.srec>
<avrgcc.common.outputfiles.usersignatures>False</avrgcc.common.outputfiles.usersignatures>
<avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcc.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcc.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcc.compiler.symbols.DefSymbols>
<ListValues>
<Value>DEBUG</Value>
</ListValues>
</avrgcc.compiler.symbols.DefSymbols>
<avrgcc.compiler.optimization.level>Optimize (-O1)</avrgcc.compiler.optimization.level>
<avrgcc.compiler.optimization.PackStructureMembers>True</avrgcc.compiler.optimization.PackStructureMembers>
<avrgcc.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcc.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcc.compiler.optimization.DebugLevel>Default (-g2)</avrgcc.compiler.optimization.DebugLevel>
<avrgcc.compiler.warnings.AllWarnings>True</avrgcc.compiler.warnings.AllWarnings>
<avrgcc.compiler.miscellaneous.OtherFlags>-std=gnu99 -Wl,-7u,vfprintf -lprintf_flt -lm</avrgcc.compiler.miscellaneous.OtherFlags>
<avrgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>True</avrgcccpp.compiler.general.ChangeDefaultCharTypeUnsigned>
<avrgcccpp.compiler.general.ChangeDefaultBitFieldUnsigned>True</avrgcccpp.compiler.general.ChangeDefaultBitFieldUnsigned>
<avrgcccpp.compiler.symbols.DefSymbols>
<ListValues>
<Value>DEBUG</Value>
</ListValues>
</avrgcccpp.compiler.symbols.DefSymbols>
<avrgcccpp.compiler.optimization.level>Optimize (-O1)</avrgcccpp.compiler.optimization.level>
<avrgcccpp.compiler.optimization.PackStructureMembers>True</avrgcccpp.compiler.optimization.PackStructureMembers>
<avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>True</avrgcccpp.compiler.optimization.AllocateBytesNeededForEnum>
<avrgcccpp.compiler.optimization.DebugLevel>Default (-g2)</avrgcccpp.compiler.optimization.DebugLevel>
<avrgcccpp.compiler.warnings.AllWarnings>True</avrgcccpp.compiler.warnings.AllWarnings>
<avrgcccpp.compiler.miscellaneous.OtherFlags>-Wl,-u,vfprintf -lprintf_flt -lm</avrgcccpp.compiler.miscellaneous.OtherFlags>
<avrgcccpp.compiler.miscellaneous.Verbose>True</avrgcccpp.compiler.miscellaneous.Verbose>
<avrgcccpp.linker.libraries.Libraries>
<ListValues>
<Value>libm</Value>
</ListValues>
</avrgcccpp.linker.libraries.Libraries>
<avrgcccpp.assembler.debugging.DebugLevel>Default (-Wa,-g)</avrgcccpp.assembler.debugging.DebugLevel>
</AvrGccCpp>
</ToolchainSettings>
</PropertyGroup>
<ItemGroup>
<Compile Include="adc.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="adc.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="ArmControl.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="avr_compiler.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="Misc.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="Misc.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="motorInfo.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="motorInfo.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="rotateStepper.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="rotateStepper.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="Sabertooth.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="Sabertooth.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="stepperInfo.cpp">
<SubType>compile</SubType>
</Compile>
<Compile Include="stepperInfo.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="usart_driver.c">
<SubType>compile</SubType>
</Compile>
<Compile Include="usart_driver.h">
<SubType>compile</SubType>
</Compile>
<Compile Include="XMegaMacros.h">
<SubType>compile</SubType>
</Compile>
</ItemGroup>
<Import Project="$(AVRSTUDIO_EXE_PATH)\\Vs\\Compiler.targets" />
</Project>

View File

@@ -0,0 +1,91 @@
ArmControl.d ArmControl.o: .././ArmControl.cpp \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iox32d4.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\xmega.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdio.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdarg.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h \
.././avr_compiler.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdbool.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdlib.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\pgmspace.h \
.././usart_driver.h .././Sabertooth.h .././XMegaMacros.h .././adc.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\ctype.h \
.././motorInfo.h .././stepperInfo.h .././rotateStepper.h .././Misc.h
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iox32d4.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\xmega.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdio.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdarg.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h:
.././avr_compiler.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdbool.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdlib.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\pgmspace.h:
.././usart_driver.h:
.././Sabertooth.h:
.././XMegaMacros.h:
.././adc.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\ctype.h:
.././motorInfo.h:
.././stepperInfo.h:
.././rotateStepper.h:
.././Misc.h:

View File

@@ -0,0 +1,409 @@
:100000000C94B8000C94E0000C94E0000C94E00018
:100010000C94E0000C94E0000C94E0000C94E000E0
:100020000C94E0000C94E0000C94E0000C94E000D0
:100030000C94E0000C94E0000C94E0000C94E000C0
:100040000C94E0000C94E0000C94E0000C94E000B0
:100050000C94E0000C94E0000C94E0000C94E000A0
:100060000C94E0000C944D010C9419020C94E000E7
:100070000C94E0000C94E0000C94E0000C94E00080
:100080000C94E0000C94E0000C94E0000C94E00070
:100090000C94E0000C94E0000C94E0000C94E00060
:1000A0000C94E0000C94E0000C94E0000C94E00050
:1000B0000C94E0000C94E0000C94E0000C94E00040
:1000C0000C94E0000C94E0000C94E0000C94E00030
:1000D0000C94E0000C94E0000C94E0000C94E00020
:1000E0000C94E0000C94E0000C94E0000C94E00010
:1000F0000C94E0000C94E0000C94E0000C94E00000
:100100000C94E0000C94E0000C94E0000C94E000EF
:100110000C94E0000C94E0000C94E0000C94E000DF
:100120000C94E0000C94E0000C94E0000C94E000CF
:100130000C94E0000C944F070C94E0000C94E00049
:100140000C94E0000C94E0000C94E0000C94E000AF
:100150000C94E0000C94E0000C94E0000C94E0009F
:100160000C94E0000C94E0000C94E0007407850708
:1001700011241FBECFEFCDBFDFE2DEBF10E2A0E053
:10018000B0E2EAE5F9E102C005900D92A231B107B3
:10019000D9F720E2A2E1B0E201C01D92AB37B2076D
:1001A000E1F711E0CEE6D1E004C02297FE010E9403
:1001B0009C0CCC36D107C9F70E9436050C94A00CD4
:1001C0000C940000AAECB1E022E02C93FC01849195
:1001D0001C9208950F931F93CF93DF93182F062F30
:1001E0008091000280FD1BC0C0E0D2E081E08883E6
:1001F00084E0898380E18A831B8286E08C8380E2AD
:1002000090E00E94E2008C8781E290E00E94E20090
:100210008D878FE79CE00197F1F700C00000E0E0D8
:10022000F2E000A3110F110F110F11A312A280A170
:10023000806880A386818823E9F3E0E0F2E086818C
:10024000868380A1806880A386818823E9F3E0E02B
:10025000F2E08681868380899189DF91CF911F9119
:100260000F910895E0E0F9E087E08083118282E158
:100270009AE786A397A381E086830895CF93DF93BF
:10028000EC0103C0CE010E94200ACE010E94180A90
:100290008111F8CFDF91CF9108951F920F920FB681
:1002A0000F9211242F933F934F935F936F937F93FC
:1002B0008F939F93AF93BF93CF93DF93EF93FF936E
:1002C0008CE690E20E942C0A8CE690E20E94180ACA
:1002D000882379F0C0912520D0E08CE690E20E943E
:1002E000200ACD5EDF4D8883809125208F5F80932B
:1002F0002520809125208A3009F088C08CE690E284
:100300000E943E0190911B20809114207091152035
:10031000609116205091172040911820309119209B
:1003200020911A20872786278527842783278227DD
:10033000981353C0E4E1F0E2808183FB882780F9C1
:100340008093262080818470809327208081C1E063
:10035000869581708C2780933B2020911620809178
:10036000152090E0820F911D8093332090933420CC
:10037000809118206091172070E0680F711D882708
:1003800077FD8095982F0E945B0B20E030E048ECD1
:1003900052E40E94C00AAB01BC0184E590E20E94D5
:1003A000BF0780911A206091192070E0680F711DBD
:1003B000882777FD8095982F0E945B0B20E030E026
:1003C00048EC52E40E94C00AAB01BC018CE390E20D
:1003D0000E94BF07C093282019C0E0EAF8E081819D
:1003E00085FFFDCF8FEF8093A008E0EAF8E08181E0
:1003F00085FFFDCF1092A008E0EAF8E0818185FF3B
:10040000FDCF8FEF8093A00810922520FF91EF91F0
:10041000DF91CF91BF91AF919F918F917F916F911C
:100420005F914F913F912F910F900FBE0F901F90B2
:1004300018951F920F920FB60F9211242F933F938E
:100440004F935F936F937F938F939F93AF93BF93DC
:10045000EF93FF938CE690E20E94410AFF91EF91A7
:10046000BF91AF919F918F917F916F915F914F91CC
:100470003F912F910F900FBE0F901F90189588ED10
:1004800084BF82E080935000E0E5F0E0818181FF4D
:10049000FDCF88ED84BF91E09093400084BFE0E5FC
:1004A000F0E0808184608083818182FFFDCFE0E580
:1004B000F0E086818D7F8683E0E6F0E080818160D8
:1004C00080830895E0E4F6E088E0818384E082831D
:1004D00041E060EA78E08CE690E20E940F0AE09149
:1004E0006C20F0916D2083E0858383818F7C806117
:1004F0008383A0EAB8E08FEC16968C931697179634
:100500001C92848180618483848188608483E0EA92
:10051000F0E08281816082830895CF93DF930E940F
:100520003F020E9462020E94320180EEE0E4F6E0A7
:100530008183A0E6B6E09FEF11969C931197E0E0CF
:10054000F6E08183C0E2D6E087E0898384E082839D
:1005500098E092839A8320E1228398E1938B9B8B8E
:1005600030E416963C93169790E29683368330E8F3
:10057000358316962C93169716969C931697169677
:100580008C93169721E02D8392E09D838E8316969F
:100590002C93169716969C937894DF91CF9108959B
:1005A000FC012081222359F0DC011196E0EAF8E0F9
:1005B000818185FFFDCF20832D912111F9CF0895F1
:1005C000EF92FF920F931F93CF93DF938C01C7E0BD
:1005D000D0E0E12CF12C0115110539F461E081E046
:1005E0000E94EA00E80EF91E09C00130110531F43D
:1005F00061E080E00E94EA00E80EF91E8FE39FE1CF
:100600000197F1F700C000002197209721F7C7015B
:1006100067E070E00E94720CCB01DF91CF911F91D7
:100620000F91FF90EF900895CF92DF92EF92FF929B
:10063000209168203091692040916A2050916B2070
:100640006091642070916520809166209091672070
:100650000E945B0A6B017C0120E030E0A9010E944E
:10066000E70B181624F0F7FAF094F7F8F094A701C6
:100670009601609158207091592080915A20909154
:100680005B200E94E70B181644F4E6E5F0E2808157
:10069000918101968083918304C01092562010921C
:1006A000572020915020309151204091522050915C
:1006B000532060914C2070914D2080914E2090915C
:1006C0004F200E945B0A6B017C0120E030E0A90111
:1006D0000E94E70B181624F0F7FAF094F7F8F0945C
:1006E000A7019601609140207091412080914220A5
:1006F000909143200E94E70B181644F4EEE3F0E2D9
:100700008081918101968083918304C010923E2064
:1007100010923F2020913E2030913F2080913C203C
:1007200090913D202817390724F08CE390E20E9435
:10073000BB07209156203091572080913C2090910A
:100740003D202817390724F084E590E20E94BB077A
:1007500080E090E00E94E002BC01882777FD809550
:10076000982F0E945B0B2FE135E848E652E40E9487
:10077000C00A25E83BEE41ED5EE30E945B0A609310
:10078000642070936520809366209093672081E0B9
:1007900090E00E94E002BC01882777FD8095982FA9
:1007A0000E945B0B2FE135E848E652E40E94C00A44
:1007B00025E83BEE41ED5EE30E945B0A60934C202E
:1007C00070934D2080934E2090934F20FF90EF9098
:1007D000DF90CF9008954F925F926F927F928F92A9
:1007E0009F92AF92BF92CF92DF92EF92FF920097CB
:1007F00009F071C0409064205090652060906620A0
:1008000070906720209168203091692040916A2083
:1008100050916B20C301B2010E945B0A6B017C0105
:1008200020E030E0A9010E94E70B181624F0F7FA47
:10083000F094F7F8F09480905C2090905D20A09068
:100840005E20B0905F2020E030E040E05FE3C50133
:10085000B4010E94EB0BA70196010E94E70B18164A
:1008600054F4809160209091612063E070E00E94D8
:10087000720CCB01A6C02091682030916920409174
:100880006A2050916B20C301B2010E945B0A6B0188
:100890007C0120E030E0A9010E94E70B181624F04B
:1008A000F7FAF094F7F8F094A7019601C501B401A6
:1008B0000E94E70B181654F48091602090916120FB
:1008C00099230CF40196959587957BC080916020C3
:1008D0009091612076C0019709F071C040904C2042
:1008E00050904D2060904E2070904F2020915020CD
:1008F000309151204091522050915320C301B201B8
:100900000E945B0A6B017C0120E030E0A9010E949B
:10091000E70B181624F0F7FAF094F7F8F0948090AB
:10092000442090904520A0904620B090472020E0A1
:1009300030E040E05FE3C501B4010E94EB0BA7018A
:1009400096010E94E70B181654F48091482090916C
:10095000492063E070E00E94720CCB0132C020910C
:100960005020309151204091522050915320C3018A
:10097000B2010E945B0A6B017C0120E030E0A9011A
:100980000E94E70B181624F0F7FAF094F7F8F094A9
:10099000A7019601C501B4010E94E70B181654F493
:1009A000809148209091492099230CF401969595C7
:1009B000879507C0809148209091492002C080E02F
:1009C00090E0FF90EF90DF90CF90BF90AF909F901E
:1009D0008F907F906F905F904F9008950097F1F403
:1009E0008091622090916320009709F43EC020918D
:1009F00068203091692040916A2050916B2060916D
:100A000064207091652080916620909167200E94FB
:100A1000E70B181614F58FEF9FEF0895019701F576
:100A200080914A2090914B200097F9F0209150201E
:100A300030915120409152205091532060914C2090
:100A400070914D2080914E2090914F200E94E70B95
:100A500018164CF48FEF9FEF089581E090E0089511
:100A600080E090E0089581E090E00895CF93DF93D7
:100A700000D000D0CDB7DEB70E948D022FEF87EAFD
:100A800091E6215080409040E1F700C0000040E630
:100A900056E060EA79E0CE0101960E94280980E0E4
:100AA00090E0A0E4B0E48093502090935120A09374
:100AB0005220B093532080E090E0A0E6B0E4809311
:100AC000682090936920A0936A20B0936B20E0E0A7
:100AD000F6E0808584FFFDCF84E590E20E94B507B3
:100AE0008CE390E20E94B5070F2EF2E6CF2EF0E2E3
:100AF000DF2EF02D0F2EFAE4EF2EF0E2FF2EF02D78
:100B000000E016E031C00E94140381E090E00E94F2
:100B1000EB03A82E81E090E00E94EE04982E80E086
:100B200090E00E94EB03B82E80E090E00E94EE047B
:100B30009A9C402D112441588B9D802D11246FE7E4
:100B4000680FCE0101960E94E008D80118968C919A
:100B500084FD0AC04FE76FE7CE0101960E94E008CE
:100B6000F801808584FFF6CFD6018D919C91892B69
:100B700051F6F70180819181892B29F689E290E273
:100B80000E94DA0781E0E0E6F6E0868360E070E04C
:100B900089E290E20E94980885E390E20E94090AA7
:100BA00061E070E085E390E20E9467090F2EF0EAB1
:100BB000EF2EF8E0FF2EF02D00E016E00F2EF2E60B
:100BC000CF2EF0E2DF2EF02D0F2EFAE4AF2EF0E262
:100BD000BF2EF02D412C512C6894662466F8762C9B
:100BE0008091122081112FC080E090E20E94D002FB
:100BF000FFEF23ED80E3F15020408040E1F700C09B
:100C00000000809113208237D9F481E08093122074
:100C1000D70111968C91119785FFFACF82E78C93BB
:100C20008091212090912220A0912320B091242016
:100C300080931D2090931E20A0931F20B09320200E
:100C400010922520CDCF813059F68091282088231D
:100C500039F280912620882309F477C040925020F1
:100C600050925120609252207092532080E090E088
:100C7000A0E6B0E48093682090936920A0936A2056
:100C8000B0936B2084E590E20E94B5078CE390E27C
:100C90000E94B50731C00E94140381E090E00E94D9
:100CA000EB03882E81E090E00E94EE04382E80E075
:100CB00090E00E94EB03982E80E090E00E94EE040A
:100CC000389C402D11244158899D802D11246FE7B7
:100CD000680FCE0101960E94E008D80118968C9109
:100CE00084FD0AC04FE76FE7CE0101960E94E0083D
:100CF000F801808584FFF6CFD6018D919C91892BD8
:100D000051F6F50180819181892B29F689E290E2E3
:100D10000E94DA0781E0E0E6F6E0868360E070E0BA
:100D200089E290E20E94980880913B20882351F04C
:100D300085E390E20E94090A61E070E085E390E2B9
:100D40000E9467091092262074C080E880934506AF
:100D500084E590E20E94B5078CE390E20E94B5071B
:100D6000609133207091342089E290E20E949808CB
:100D70000E94140331C00E94140380E090E00E949E
:100D8000EB03882E81E090E00E94EE04382E80E094
:100D900090E00E94EB03982E80E090E00E94EE0429
:100DA000389C402D11244158899D802D11246FE7D6
:100DB000680FCE0101960E94E008D80118968C9128
:100DC00084FD0AC04FE76FE7CE0101960E94E0085C
:100DD000F801808584FFF6CFD6018D919C91892BF7
:100DE00051F6F50180819181892B29F64FE76FE754
:100DF000CE0101960E94E00880913B2081110BC03A
:100E000085E390E20E94090A60E070E085E390E2E9
:100E10000E9467090EC080913B20813051F485E328
:100E200090E20E94090A61E070E085E390E20E948E
:100E300067091092282080E880934606D701119612
:100E40008C91119785FFFACF8FEF8C93F7018181F9
:100E500085FFFCCFD80118968C9183FD02C083E0FA
:100E600001C082E0F7018083D70111968C91119720
:100E700085FFFACF8FEF8C9310922520809121204F
:100E800090912220A0912320B091242080931D20B6
:100E900090931E20A0931F20B0932020A1CE1F92DC
:100EA0000F920FB60F9211248F939F93AF93BF931E
:100EB0008091212090912220A0912320B091242084
:100EC0000196A11DB11D8093212090932220A09313
:100ED0002320B0932420BF91AF919F918F910F90C9
:100EE0000FBE0F901F90189584E590E20E94960720
:100EF0008CE390E20E94960785E390E20E945A09F3
:100F000089E290E20E94C507089589E290E20E947A
:100F1000D90785E390E20E9466098CE390E20E9483
:100F2000B40784E590E20E94B4070895FC011282A0
:100F3000138285E090E0808391834DEC5CEC6CE45F
:100F40007EE3448355836683778340E050E060E42A
:100F50007FE3408751876287738784E690E08487C8
:100F60009587168617860895089521E030E0FC01E4
:100F7000268737870895FC01168617860895FC0199
:100F8000448B558B668B778B0895FC0140E050E0D5
:100F90006FE773E4448355836683778340E050E0D2
:100FA00060E87FEB408351836283738310861186F0
:100FB00008950895CF93DF93EC0181E0E0E6F6E039
:100FC000868360E070E020E0E0E0F6E0A0E6B6E0D6
:100FD00031E052E0808584FFFDCF808582FF10C024
:100FE000211110C015963C9315972FEF4FE285E71E
:100FF000215040408040E1F700C00000232F02C094
:10100000222341F06F5F7F4F673971051CF08085A7
:1010100082FD13C016965C9316978FEB92E10197B1
:10102000F1F700C0000015965C9315978FEB92E1E5
:101030000197F1F700C00000CDCF82E0E0E6F6E0D6
:1010400086838FEB92E10197F1F700C0000082E008
:1010500085838FEB92E10197F1F700C000001886BD
:101060001986882777FD8095982F0E945B0B2C812D
:101070003D814E815F810E94C00A688379838A83A3
:101080009B839FEF2FE245E7915020404040E1F7DE
:1010900000C00000DF91CF910895CF93DF93EC0162
:1010A000CB01181619062CF421E0E0E6F6E02683C1
:1010B00004C021E0E0E6F6E02583BC01992324F496
:1010C00066277727681B790B882777FD8095982FEF
:1010D0000E945B0B288139814A815B810E94EB0B66
:1010E0000E94280B1616170604F580E090E0E0E059
:1010F000F6E0A0E6B6E032E0208524FFFDCF1696AC
:101100003C931697CFE7DCE02197F1F700C0000091
:1011100015963C931597CFE9DFE02197F1F700C0D2
:10112000000001968617970739F7DF91CF91089550
:10113000CF92DF92EF92FF92CF93DF93EC0188275B
:1011400077FD8095982F0E945B0B29E23CE540E1FA
:1011500052E40E945C0A0E94280B6B017C01888586
:101160009985B601681B790BCE010E944D08C8868F
:10117000D986DF91CF91FF90EF90DF90CF900895C7
:10118000DC01ED91FC911197818185FFFDCF80E815
:101190008083ED91FC911197818185FFFDCF608364
:1011A000ED91FC911197818185FFFDCF4083ED91F9
:1011B000FC91818185FFFDCF640F6F776083089577
:1011C0000F931F93CF93DF93EC01842F6F3761F060
:1011D0006F3720F44FE7461B61E00BC066233CF4F9
:1011E00041E8460F60E005C040E060E002C040E03A
:1011F00060E08F3761F08F3720F40FE7081B15E0B0
:101200000BC088233CF401E8080F14E005C000E09F
:1012100014E002C000E014E0CE010E94C008402F9C
:10122000612FCE010E94C008DF91CF911F910F91D5
:101230000895CF93DF93EC0140E060E00E94C00886
:1012400040E064E0CE010E94C008DF91CF91089594
:10125000CF93DF93EC01688379834A835B8388E0D3
:10126000FA018183E881F98183E08583E881F9814E
:101270008FEC8683E881F9811782E881F981848186
:1012800088608483FFEF23EC89E0F15020408040A8
:10129000E1F700C00000E881F9818AEA808344E137
:1012A0006EE0CE010E94C008CE010E941909DF91B4
:1012B000CF910895FC01108211828FEF9FEF8283FE
:1012C000938381E090E08483958308950895CF937C
:1012D000DF93EC0128813981232B09F497C0623018
:1012E000710508F093C02A813B812617370709F45E
:1012F0008DC06A837B836115710529F420E1E0E6E6
:10130000F6E0258307C06130710521F420E1E0E6B5
:10131000F6E02683FC0124813581232B11F520E1A1
:1013200037E2E0E0F6E0A0E6B6E050E2408544FFB8
:10133000FDCF15965C931597CFE8D1E02197F1F793
:1013400000C0000016965C931697CFE9DFE0219766
:10135000F1F700C00000215031092115310531F7A6
:1013600003C0FC01148215826115710531F548EA4C
:1013700052ED62E070E0E0E0F6E0A0E6B6E030E2D8
:10138000208524FFFDCF15963C93159725ED2A95D2
:10139000F1F7000016963C931697CFE3D1E0219722
:1013A000F1F700C000004150510961097109411570
:1013B00051056105710521F726C06130710519F5E8
:1013C000E0E2F6E0208523FD1EC0E0E0F6E0A0E6C6
:1013D000B6E050E260E276E0408544FFFDCF15962E
:1013E0005C931597D5EDDA95F1F7000016965C93AE
:1013F0001697CFE3D1E02197F1F700C00000EB0191
:10140000488543FFE9CFFC0110821182DF91CF9123
:10141000089521E030E0FC01208331830895FC0130
:101420006083718342831486138616861586089519
:10143000FC012385948581E0291301C080E0089593
:10144000FC018485DF01A80FB11D13968C91948552
:101450009F5F937094870895FC0183858F5F8370ED
:101460009485A081B1812C91891749F09385DF0182
:10147000A90FB11D13962C93838781E0089580E016
:101480000895FC0186859585981307C00190F08129
:10149000E02D83818C7F838308958685DF01A80FEB
:1014A000B11D17968C91A081B1818C9386858F5F39
:1014B0008370868708955058BB27AA270ED04DC148
:1014C0003ED130F043D120F031F49F3F11F41EF4AF
:1014D00033C10EF4E095E7FB29C1E92F4FD180F32A
:1014E000BA17620773078407950718F071F49EF521
:1014F00067C10EF4E0950B2EBA2FA02D0B01B90198
:1015000090010C01CA01A0011124FF27591B99F079
:10151000593F50F4503E68F11A16F040A22F232F85
:10152000342F4427585FF3CF469537952795A795D5
:10153000F0405395C9F77EF41F16BA0B620B730B7C
:10154000840BBAF09150A1F0FF0FBB1F661F771FED
:10155000881FC2F70EC0BA0F621F731F841F48F4A2
:10156000879577956795B795F7959E3F08F0B3CF28
:101570009395880F08F09927EE0F97958795089512
:101580000CD0EBC0E3D040F0DAD030F021F45F3F74
:1015900019F0CCC0511115C1CFC0F0D098F39923E8
:1015A000C9F35523B1F3951B550BBB27AA27621727
:1015B0007307840738F09F5F5F4F220F331F441F6C
:1015C000AA1FA9F333D00E2E3AF0E0E830D09150A4
:1015D0005040E695001CCAF729D0FE2F27D0660F91
:1015E000771F881FBB1F261737074807AB07B0E8D0
:1015F00009F0BB0B802DBF01FF2793585F4F2AF0E6
:101600009E3F510568F092C0DCC05F3FECF3983E0E
:10161000DCF3869577956795B795F7959F5FC9F742
:10162000880F911D9695879597F90895E1E0660FCB
:10163000771F881FBB1F621773078407BA0720F044
:10164000621B730B840BBA0BEE1F88F7E0950895AD
:1016500004D06894B111B5C0089598D088F09F5710
:1016600090F0B92F9927B751A0F0D1F0660F771FEE
:10167000881F991F1AF0BA95C9F712C0B13081F0CE
:101680009FD0B1E008959CC0672F782F8827B85F5E
:1016900039F0B93FCCF3869577956795B395D9F72F
:1016A0003EF490958095709561957F4F8F4F9F4F39
:1016B0000895E89409C097FB3EF490958095709545
:1016C00061957F4F8F4F9F4F9923A9F0F92F96E98E
:1016D000BB279395F695879577956795B795F11103
:1016E000F8CFFAF4BB0F11F460FF1BC06F5F7F4FA0
:1016F0008F4F9F4F16C0882311F096E911C07723B2
:1017000021F09EE8872F762F05C0662371F096E8BA
:10171000862F70E060E02AF09A95660F771F881F89
:10172000DAF7880F9695879597F9089597F99F6747
:1017300080E870E060E008959FEF80EC0895002459
:101740000A941616170618060906089500240A9426
:1017500012161306140605060895092E0394000CAC
:1017600011F4882352F0BB0F40F4BF2B11F460FF3B
:1017700004C06F5F7F4F8F4F9F4F089557FD905864
:10178000440F551F59F05F3F71F04795880F97FB45
:10179000991F61F09F3F79F08795089512161306FF
:1017A0001406551FF2CF4695F1DF08C0161617062E
:1017B0001806991FF1CF8695710561050894089563
:1017C000E894BB2766277727CB0197F9089566D061
:1017D00008F48FEF08950BD0C0CFB1DF28F0B6DF4B
:1017E00018F0952309F0A2CFA7CF1124EACFC6DFC6
:1017F000A0F3959FD1F3950F50E0551F629FF00124
:10180000729FBB27F00DB11D639FAA27F00DB11D7C
:10181000AA1F649F6627B00DA11D661F829F222705
:10182000B00DA11D621F739FB00DA11D621F839F8C
:10183000A00D611D221F749F3327A00D611D231F62
:10184000849F600D211D822F762F6A2F11249F57B0
:1018500050408AF0E1F088234AF0EE0FFF1FBB1FD3
:10186000661F771F881F91505040A9F79E3F510572
:1018700070F05CCFA6CF5F3FECF3983EDCF386952B
:1018800077956795B795F795E7959F5FC1F7FE2B1D
:10189000880F911D9695879597F90895990F0008DF
:1018A000550FAA0BE0E8FEEF16161706E807F90732
:1018B000C0F012161306E407F50798F0621B730BCD
:1018C000840B950B39F40A2661F0232B242B252B4E
:1018D00021F408950A2609F4A140A6958FEF811DF1
:1018E000811D089597FB072E16F4009407D077FD0D
:1018F00009D00E94860C07FC05D03EF49095819596
:101900009F4F0895709561957F4F0895AA1BBB1B4B
:1019100051E107C0AA1FBB1FA617B70710F0A61BEF
:10192000B70B881F991F5A95A9F780959095BC0110
:10193000CD010895EE0FFF1F0590F491E02D09945D
:1019400011E0CEE6D1E004C0FE010E949C0C22967C
:0A195000C037D107C9F7F894FFCFA4
:10195A0049443A2041726D436F6E74726F6C0D0A7E
:02196A0000007B
:00000001FF

View File

@@ -0,0 +1,410 @@
S012000041726D436F6E74726F6C2E7372656311
S11300000C94B8000C94E0000C94E0000C94E00014
S11300100C94E0000C94E0000C94E0000C94E000DC
S11300200C94E0000C94E0000C94E0000C94E000CC
S11300300C94E0000C94E0000C94E0000C94E000BC
S11300400C94E0000C94E0000C94E0000C94E000AC
S11300500C94E0000C94E0000C94E0000C94E0009C
S11300600C94E0000C944D010C9419020C94E000E3
S11300700C94E0000C94E0000C94E0000C94E0007C
S11300800C94E0000C94E0000C94E0000C94E0006C
S11300900C94E0000C94E0000C94E0000C94E0005C
S11300A00C94E0000C94E0000C94E0000C94E0004C
S11300B00C94E0000C94E0000C94E0000C94E0003C
S11300C00C94E0000C94E0000C94E0000C94E0002C
S11300D00C94E0000C94E0000C94E0000C94E0001C
S11300E00C94E0000C94E0000C94E0000C94E0000C
S11300F00C94E0000C94E0000C94E0000C94E000FC
S11301000C94E0000C94E0000C94E0000C94E000EB
S11301100C94E0000C94E0000C94E0000C94E000DB
S11301200C94E0000C94E0000C94E0000C94E000CB
S11301300C94E0000C944F070C94E0000C94E00045
S11301400C94E0000C94E0000C94E0000C94E000AB
S11301500C94E0000C94E0000C94E0000C94E0009B
S11301600C94E0000C94E0000C94E0007407850704
S113017011241FBECFEFCDBFDFE2DEBF10E2A0E04F
S1130180B0E2EAE5F9E102C005900D92A231B107AF
S1130190D9F720E2A2E1B0E201C01D92AB37B20769
S11301A0E1F711E0CEE6D1E004C02297FE010E94FF
S11301B09C0CCC36D107C9F70E9436050C94A00CD0
S11301C00C940000AAECB1E022E02C93FC01849191
S11301D01C9208950F931F93CF93DF93182F062F2C
S11301E08091000280FD1BC0C0E0D2E081E08883E2
S11301F084E0898380E18A831B8286E08C8380E2A9
S113020090E00E94E2008C8781E290E00E94E2008C
S11302108D878FE79CE00197F1F700C00000E0E0D4
S1130220F2E000A3110F110F110F11A312A280A16C
S1130230806880A386818823E9F3E0E0F2E0868188
S1130240868380A1806880A386818823E9F3E0E027
S1130250F2E08681868380899189DF91CF911F9115
S11302600F910895E0E0F9E087E08083118282E154
S11302709AE786A397A381E086830895CF93DF93BB
S1130280EC0103C0CE010E94200ACE010E94180A8C
S11302908111F8CFDF91CF9108951F920F920FB67D
S11302A00F9211242F933F934F935F936F937F93F8
S11302B08F939F93AF93BF93CF93DF93EF93FF936A
S11302C08CE690E20E942C0A8CE690E20E94180AC6
S11302D0882379F0C0912520D0E08CE690E20E943A
S11302E0200ACD5EDF4D8883809125208F5F809327
S11302F02520809125208A3009F088C08CE690E280
S11303000E943E0190911B20809114207091152031
S11303106091162050911720409118203091192097
S113032020911A20872786278527842783278227D9
S1130330981353C0E4E1F0E2808183FB882780F9BD
S11303408093262080818470809327208081C1E05F
S1130350869581708C2780933B2020911620809174
S1130360152090E0820F911D8093332090933420C8
S1130370809118206091172070E0680F711D882704
S113038077FD8095982F0E945B0B20E030E048ECCD
S113039052E40E94C00AAB01BC0184E590E20E94D1
S11303A0BF0780911A206091192070E0680F711DB9
S11303B0882777FD8095982F0E945B0B20E030E022
S11303C048EC52E40E94C00AAB01BC018CE390E209
S11303D00E94BF07C093282019C0E0EAF8E0818199
S11303E085FFFDCF8FEF8093A008E0EAF8E08181DC
S11303F085FFFDCF1092A008E0EAF8E0818185FF37
S1130400FDCF8FEF8093A00810922520FF91EF91EC
S1130410DF91CF91BF91AF919F918F917F916F9118
S11304205F914F913F912F910F900FBE0F901F90AE
S113043018951F920F920FB60F9211242F933F938A
S11304404F935F936F937F938F939F93AF93BF93D8
S1130450EF93FF938CE690E20E94410AFF91EF91A3
S1130460BF91AF919F918F917F916F915F914F91C8
S11304703F912F910F900FBE0F901F90189588ED0C
S113048084BF82E080935000E0E5F0E0818181FF49
S1130490FDCF88ED84BF91E09093400084BFE0E5F8
S11304A0F0E0808184608083818182FFFDCFE0E57C
S11304B0F0E086818D7F8683E0E6F0E080818160D4
S11304C080830895E0E4F6E088E0818384E0828319
S11304D041E060EA78E08CE690E20E940F0AE09145
S11304E06C20F0916D2083E0858383818F7C806113
S11304F08383A0EAB8E08FEC16968C931697179630
S11305001C92848180618483848188608483E0EA8E
S1130510F0E08281816082830895CF93DF930E940B
S11305203F020E9462020E94320180EEE0E4F6E0A3
S11305308183A0E6B6E09FEF11969C931197E0E0CB
S1130540F6E08183C0E2D6E087E0898384E0828399
S113055098E092839A8320E1228398E1938B9B8B8A
S113056030E416963C93169790E29683368330E8EF
S1130570358316962C93169716969C931697169673
S11305808C93169721E02D8392E09D838E8316969B
S11305902C93169716969C937894DF91CF91089597
S11305A0FC012081222359F0DC011196E0EAF8E0F5
S11305B0818185FFFDCF20832D912111F9CF0895ED
S11305C0EF92FF920F931F93CF93DF938C01C7E0B9
S11305D0D0E0E12CF12C0115110539F461E081E042
S11305E00E94EA00E80EF91E09C00130110531F439
S11305F061E080E00E94EA00E80EF91E8FE39FE1CB
S11306000197F1F700C000002197209721F7C70157
S113061067E070E00E94720CCB01DF91CF911F91D3
S11306200F91FF90EF900895CF92DF92EF92FF9297
S1130630209168203091692040916A2050916B206C
S1130640609164207091652080916620909167206C
S11306500E945B0A6B017C0120E030E0A9010E944A
S1130660E70B181624F0F7FAF094F7F8F094A701C2
S11306709601609158207091592080915A20909150
S11306805B200E94E70B181644F4E6E5F0E2808153
S1130690918101968083918304C010925620109218
S11306A05720209150203091512040915220509158
S11306B0532060914C2070914D2080914E20909158
S11306C04F200E945B0A6B017C0120E030E0A9010D
S11306D00E94E70B181624F0F7FAF094F7F8F09458
S11306E0A7019601609140207091412080914220A1
S11306F0909143200E94E70B181644F4EEE3F0E2D5
S11307008081918101968083918304C010923E2060
S113071010923F2020913E2030913F2080913C2038
S113072090913D202817390724F08CE390E20E9431
S1130730BB07209156203091572080913C20909106
S11307403D202817390724F084E590E20E94BB0776
S113075080E090E00E94E002BC01882777FD80954C
S1130760982F0E945B0B2FE135E848E652E40E9483
S1130770C00A25E83BEE41ED5EE30E945B0A60930C
S1130780642070936520809366209093672081E0B5
S113079090E00E94E002BC01882777FD8095982FA5
S11307A00E945B0B2FE135E848E652E40E94C00A40
S11307B025E83BEE41ED5EE30E945B0A60934C202A
S11307C070934D2080934E2090934F20FF90EF9094
S11307D0DF90CF9008954F925F926F927F928F92A5
S11307E09F92AF92BF92CF92DF92EF92FF920097C7
S11307F009F071C04090642050906520609066209C
S113080070906720209168203091692040916A207F
S113081050916B20C301B2010E945B0A6B017C0101
S113082020E030E0A9010E94E70B181624F0F7FA43
S1130830F094F7F8F09480905C2090905D20A09064
S11308405E20B0905F2020E030E040E05FE3C5012F
S1130850B4010E94EB0BA70196010E94E70B181646
S113086054F4809160209091612063E070E00E94D4
S1130870720CCB01A6C02091682030916920409170
S11308806A2050916B20C301B2010E945B0A6B0184
S11308907C0120E030E0A9010E94E70B181624F047
S11308A0F7FAF094F7F8F094A7019601C501B401A2
S11308B00E94E70B181654F48091602090916120F7
S11308C099230CF40196959587957BC080916020BF
S11308D09091612076C0019709F071C040904C203E
S11308E050904D2060904E2070904F2020915020C9
S11308F0309151204091522050915320C301B201B4
S11309000E945B0A6B017C0120E030E0A9010E9497
S1130910E70B181624F0F7FAF094F7F8F0948090A7
S1130920442090904520A0904620B090472020E09D
S113093030E040E05FE3C501B4010E94EB0BA70186
S113094096010E94E70B181654F480914820909168
S1130950492063E070E00E94720CCB0132C0209108
S11309605020309151204091522050915320C30186
S1130970B2010E945B0A6B017C0120E030E0A90116
S11309800E94E70B181624F0F7FAF094F7F8F094A5
S1130990A7019601C501B4010E94E70B181654F48F
S11309A0809148209091492099230CF401969595C3
S11309B0879507C0809148209091492002C080E02B
S11309C090E0FF90EF90DF90CF90BF90AF909F901A
S11309D08F907F906F905F904F9008950097F1F4FF
S11309E08091622090916320009709F43EC0209189
S11309F068203091692040916A2050916B20609169
S1130A0064207091652080916620909167200E94F7
S1130A10E70B181614F58FEF9FEF0895019701F572
S1130A2080914A2090914B200097F9F0209150201A
S1130A3030915120409152205091532060914C208C
S1130A4070914D2080914E2090914F200E94E70B91
S1130A5018164CF48FEF9FEF089581E090E008950D
S1130A6080E090E0089581E090E00895CF93DF93D3
S1130A7000D000D0CDB7DEB70E948D022FEF87EAF9
S1130A8091E6215080409040E1F700C0000040E62C
S1130A9056E060EA79E0CE0101960E94280980E0E0
S1130AA090E0A0E4B0E48093502090935120A09370
S1130AB05220B093532080E090E0A0E6B0E480930D
S1130AC0682090936920A0936A20B0936B20E0E0A3
S1130AD0F6E0808584FFFDCF84E590E20E94B507AF
S1130AE08CE390E20E94B5070F2EF2E6CF2EF0E2DF
S1130AF0DF2EF02D0F2EFAE4EF2EF0E2FF2EF02D74
S1130B0000E016E031C00E94140381E090E00E94EE
S1130B10EB03A82E81E090E00E94EE04982E80E082
S1130B2090E00E94EB03B82E80E090E00E94EE0477
S1130B309A9C402D112441588B9D802D11246FE7E0
S1130B40680FCE0101960E94E008D80118968C9196
S1130B5084FD0AC04FE76FE7CE0101960E94E008CA
S1130B60F801808584FFF6CFD6018D919C91892B65
S1130B7051F6F70180819181892B29F689E290E26F
S1130B800E94DA0781E0E0E6F6E0868360E070E048
S1130B9089E290E20E94980885E390E20E94090AA3
S1130BA061E070E085E390E20E9467090F2EF0EAAD
S1130BB0EF2EF8E0FF2EF02D00E016E00F2EF2E607
S1130BC0CF2EF0E2DF2EF02D0F2EFAE4AF2EF0E25E
S1130BD0BF2EF02D412C512C6894662466F8762C97
S1130BE08091122081112FC080E090E20E94D002F7
S1130BF0FFEF23ED80E3F15020408040E1F700C097
S1130C000000809113208237D9F481E08093122070
S1130C10D70111968C91119785FFFACF82E78C93B7
S1130C208091212090912220A0912320B091242012
S1130C3080931D2090931E20A0931F20B09320200A
S1130C4010922520CDCF813059F680912820882319
S1130C5039F280912620882309F477C040925020ED
S1130C6050925120609252207092532080E090E084
S1130C70A0E6B0E48093682090936920A0936A2052
S1130C80B0936B2084E590E20E94B5078CE390E278
S1130C900E94B50731C00E94140381E090E00E94D5
S1130CA0EB03882E81E090E00E94EE04382E80E071
S1130CB090E00E94EB03982E80E090E00E94EE0406
S1130CC0389C402D11244158899D802D11246FE7B3
S1130CD0680FCE0101960E94E008D80118968C9105
S1130CE084FD0AC04FE76FE7CE0101960E94E00839
S1130CF0F801808584FFF6CFD6018D919C91892BD4
S1130D0051F6F50180819181892B29F689E290E2DF
S1130D100E94DA0781E0E0E6F6E0868360E070E0B6
S1130D2089E290E20E94980880913B20882351F048
S1130D3085E390E20E94090A61E070E085E390E2B5
S1130D400E9467091092262074C080E880934506AB
S1130D5084E590E20E94B5078CE390E20E94B50717
S1130D60609133207091342089E290E20E949808C7
S1130D700E94140331C00E94140380E090E00E949A
S1130D80EB03882E81E090E00E94EE04382E80E090
S1130D9090E00E94EB03982E80E090E00E94EE0425
S1130DA0389C402D11244158899D802D11246FE7D2
S1130DB0680FCE0101960E94E008D80118968C9124
S1130DC084FD0AC04FE76FE7CE0101960E94E00858
S1130DD0F801808584FFF6CFD6018D919C91892BF3
S1130DE051F6F50180819181892B29F64FE76FE750
S1130DF0CE0101960E94E00880913B2081110BC036
S1130E0085E390E20E94090A60E070E085E390E2E5
S1130E100E9467090EC080913B20813051F485E324
S1130E2090E20E94090A61E070E085E390E20E948A
S1130E3067091092282080E880934606D70111960E
S1130E408C91119785FFFACF8FEF8C93F7018181F5
S1130E5085FFFCCFD80118968C9183FD02C083E0F6
S1130E6001C082E0F7018083D70111968C9111971C
S1130E7085FFFACF8FEF8C9310922520809121204B
S1130E8090912220A0912320B091242080931D20B2
S1130E9090931E20A0931F20B0932020A1CE1F92D8
S1130EA00F920FB60F9211248F939F93AF93BF931A
S1130EB08091212090912220A0912320B091242080
S1130EC00196A11DB11D8093212090932220A0930F
S1130ED02320B0932420BF91AF919F918F910F90C5
S1130EE00FBE0F901F90189584E590E20E9496071C
S1130EF08CE390E20E94960785E390E20E945A09EF
S1130F0089E290E20E94C507089589E290E20E9476
S1130F10D90785E390E20E9466098CE390E20E947F
S1130F20B40784E590E20E94B4070895FC0112829C
S1130F30138285E090E0808391834DEC5CEC6CE45B
S1130F407EE3448355836683778340E050E060E426
S1130F507FE3408751876287738784E690E08487C4
S1130F609587168617860895089521E030E0FC01E0
S1130F70268737870895FC01168617860895FC0195
S1130F80448B558B668B778B0895FC0140E050E0D1
S1130F906FE773E4448355836683778340E050E0CE
S1130FA060E87FEB408351836283738310861186EC
S1130FB008950895CF93DF93EC0181E0E0E6F6E035
S1130FC0868360E070E020E0E0E0F6E0A0E6B6E0D2
S1130FD031E052E0808584FFFDCF808582FF10C020
S1130FE0211110C015963C9315972FEF4FE285E71A
S1130FF0215040408040E1F700C00000232F02C090
S1131000222341F06F5F7F4F673971051CF08085A3
S113101082FD13C016965C9316978FEB92E10197AD
S1131020F1F700C0000015965C9315978FEB92E1E1
S11310300197F1F700C00000CDCF82E0E0E6F6E0D2
S113104086838FEB92E10197F1F700C0000082E004
S113105085838FEB92E10197F1F700C000001886B9
S11310601986882777FD8095982F0E945B0B2C8129
S11310703D814E815F810E94C00A688379838A839F
S11310809B839FEF2FE245E7915020404040E1F7DA
S113109000C00000DF91CF910895CF93DF93EC015E
S11310A0CB01181619062CF421E0E0E6F6E02683BD
S11310B004C021E0E0E6F6E02583BC01992324F492
S11310C066277727681B790B882777FD8095982FEB
S11310D00E945B0B288139814A815B810E94EB0B62
S11310E00E94280B1616170604F580E090E0E0E055
S11310F0F6E0A0E6B6E032E0208524FFFDCF1696A8
S11311003C931697CFE7DCE02197F1F700C000008D
S113111015963C931597CFE9DFE02197F1F700C0CE
S1131120000001968617970739F7DF91CF9108954C
S1131130CF92DF92EF92FF92CF93DF93EC01882757
S113114077FD8095982F0E945B0B29E23CE540E1F6
S113115052E40E945C0A0E94280B6B017C01888582
S11311609985B601681B790BCE010E944D08C8868B
S1131170D986DF91CF91FF90EF90DF90CF900895C3
S1131180DC01ED91FC911197818185FFFDCF80E811
S11311908083ED91FC911197818185FFFDCF608360
S11311A0ED91FC911197818185FFFDCF4083ED91F5
S11311B0FC91818185FFFDCF640F6F776083089573
S11311C00F931F93CF93DF93EC01842F6F3761F05C
S11311D06F3720F44FE7461B61E00BC066233CF4F5
S11311E041E8460F60E005C040E060E002C040E036
S11311F060E08F3761F08F3720F40FE7081B15E0AC
S11312000BC088233CF401E8080F14E005C000E09B
S113121014E002C000E014E0CE010E94C008402F98
S1131220612FCE010E94C008DF91CF911F910F91D1
S11312300895CF93DF93EC0140E060E00E94C00882
S113124040E064E0CE010E94C008DF91CF91089590
S1131250CF93DF93EC01688379834A835B8388E0CF
S1131260FA018183E881F98183E08583E881F9814A
S11312708FEC8683E881F9811782E881F981848182
S113128088608483FFEF23EC89E0F15020408040A4
S1131290E1F700C00000E881F9818AEA808344E133
S11312A06EE0CE010E94C008CE010E941909DF91B0
S11312B0CF910895FC01108211828FEF9FEF8283FA
S11312C0938381E090E08483958308950895CF9378
S11312D0DF93EC0128813981232B09F497C0623014
S11312E0710508F093C02A813B812617370709F45A
S11312F08DC06A837B836115710529F420E1E0E6E2
S1131300F6E0258307C06130710521F420E1E0E6B1
S1131310F6E02683FC0124813581232B11F520E19D
S113132037E2E0E0F6E0A0E6B6E050E2408544FFB4
S1131330FDCF15965C931597CFE8D1E02197F1F78F
S113134000C0000016965C931697CFE9DFE0219762
S1131350F1F700C00000215031092115310531F7A2
S113136003C0FC01148215826115710531F548EA48
S113137052ED62E070E0E0E0F6E0A0E6B6E030E2D4
S1131380208524FFFDCF15963C93159725ED2A95CE
S1131390F1F7000016963C931697CFE3D1E021971E
S11313A0F1F700C00000415051096109710941156C
S11313B051056105710521F726C06130710519F5E4
S11313C0E0E2F6E0208523FD1EC0E0E0F6E0A0E6C2
S11313D0B6E050E260E276E0408544FFFDCF15962A
S11313E05C931597D5EDDA95F1F7000016965C93AA
S11313F01697CFE3D1E02197F1F700C00000EB018D
S1131400488543FFE9CFFC0110821182DF91CF911F
S1131410089521E030E0FC01208331830895FC012C
S11314206083718342831486138616861586089515
S1131430FC012385948581E0291301C080E008958F
S1131440FC018485DF01A80FB11D13968C9194854E
S11314509F5F937094870895FC0183858F5F8370E9
S11314609485A081B1812C91891749F09385DF017E
S1131470A90FB11D13962C93838781E0089580E012
S11314800895FC0186859585981307C00190F08125
S1131490E02D83818C7F838308958685DF01A80FE7
S11314A0B11D17968C91A081B1818C9386858F5F35
S11314B08370868708955058BB27AA270ED04DC144
S11314C03ED130F043D120F031F49F3F11F41EF4AB
S11314D033C10EF4E095E7FB29C1E92F4FD180F326
S11314E0BA17620773078407950718F071F49EF51D
S11314F067C10EF4E0950B2EBA2FA02D0B01B90194
S113150090010C01CA01A0011124FF27591B99F075
S1131510593F50F4503E68F11A16F040A22F232F81
S1131520342F4427585FF3CF469537952795A795D1
S1131530F0405395C9F77EF41F16BA0B620B730B78
S1131540840BBAF09150A1F0FF0FBB1F661F771FE9
S1131550881FC2F70EC0BA0F621F731F841F48F49E
S1131560879577956795B795F7959E3F08F0B3CF24
S11315709395880F08F09927EE0F9795879508950E
S11315800CD0EBC0E3D040F0DAD030F021F45F3F70
S113159019F0CCC0511115C1CFC0F0D098F39923E4
S11315A0C9F35523B1F3951B550BBB27AA27621723
S11315B07307840738F09F5F5F4F220F331F441F68
S11315C0AA1FA9F333D00E2E3AF0E0E830D09150A0
S11315D05040E695001CCAF729D0FE2F27D0660F8D
S11315E0771F881FBB1F261737074807AB07B0E8CC
S11315F009F0BB0B802DBF01FF2793585F4F2AF0E2
S11316009E3F510568F092C0DCC05F3FECF3983E0A
S1131610DCF3869577956795B795F7959F5FC9F73E
S1131620880F911D9695879597F90895E1E0660FC7
S1131630771F881FBB1F621773078407BA0720F040
S1131640621B730B840BBA0BEE1F88F7E0950895A9
S113165004D06894B111B5C0089598D088F09F570C
S113166090F0B92F9927B751A0F0D1F0660F771FEA
S1131670881F991F1AF0BA95C9F712C0B13081F0CA
S11316809FD0B1E008959CC0672F782F8827B85F5A
S113169039F0B93FCCF3869577956795B395D9F72B
S11316A03EF490958095709561957F4F8F4F9F4F35
S11316B00895E89409C097FB3EF490958095709541
S11316C061957F4F8F4F9F4F9923A9F0F92F96E98A
S11316D0BB279395F695879577956795B795F111FF
S11316E0F8CFFAF4BB0F11F460FF1BC06F5F7F4F9C
S11316F08F4F9F4F16C0882311F096E911C07723AE
S113170021F09EE8872F762F05C0662371F096E8B6
S1131710862F70E060E02AF09A95660F771F881F85
S1131720DAF7880F9695879597F9089597F99F6743
S113173080E870E060E008959FEF80EC0895002455
S11317400A941616170618060906089500240A9422
S113175012161306140605060895092E0394000CA8
S113176011F4882352F0BB0F40F4BF2B11F460FF37
S113177004C06F5F7F4F8F4F9F4F089557FD905860
S1131780440F551F59F05F3F71F04795880F97FB41
S1131790991F61F09F3F79F08795089512161306FB
S11317A01406551FF2CF4695F1DF08C0161617062A
S11317B01806991FF1CF869571056105089408955F
S11317C0E894BB2766277727CB0197F9089566D05D
S11317D008F48FEF08950BD0C0CFB1DF28F0B6DF47
S11317E018F0952309F0A2CFA7CF1124EACFC6DFC2
S11317F0A0F3959FD1F3950F50E0551F629FF00120
S1131800729FBB27F00DB11D639FAA27F00DB11D78
S1131810AA1F649F6627B00DA11D661F829F222701
S1131820B00DA11D621F739FB00DA11D621F839F88
S1131830A00D611D221F749F3327A00D611D231F5E
S1131840849F600D211D822F762F6A2F11249F57AC
S113185050408AF0E1F088234AF0EE0FFF1FBB1FCF
S1131860661F771F881F91505040A9F79E3F51056E
S113187070F05CCFA6CF5F3FECF3983EDCF3869527
S113188077956795B795F795E7959F5FC1F7FE2B19
S1131890880F911D9695879597F90895990F0008DB
S11318A0550FAA0BE0E8FEEF16161706E807F9072E
S11318B0C0F012161306E407F50798F0621B730BC9
S11318C0840B950B39F40A2661F0232B242B252B4A
S11318D021F408950A2609F4A140A6958FEF811DED
S11318E0811D089597FB072E16F4009407D077FD09
S11318F009D00E94860C07FC05D03EF49095819592
S11319009F4F0895709561957F4F0895AA1BBB1B47
S113191051E107C0AA1FBB1FA617B70710F0A61BEB
S1131920B70B881F991F5A95A9F780959095BC010C
S1131930CD010895EE0FFF1F0590F491E02D099459
S113194011E0CEE6D1E004C0FE010E949C0C229678
S10D1950C037D107C9F7F894FFCFA0
S113195A49443A2041726D436F6E74726F6C0D0A7A
S105196A000077
S9030000FC

View File

@@ -0,0 +1,181 @@
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
SHELL := cmd.exe
RM := rm -rf
USER_OBJS :=
LIBS :=
PROJ :=
O_SRCS :=
C_SRCS :=
S_SRCS :=
S_UPPER_SRCS :=
OBJ_SRCS :=
ASM_SRCS :=
PREPROCESSING_SRCS :=
OBJS :=
OBJS_AS_ARGS :=
C_DEPS :=
C_DEPS_AS_ARGS :=
EXECUTABLES :=
OUTPUT_FILE_PATH :=
OUTPUT_FILE_PATH_AS_ARGS :=
AVR_APP_PATH :=$$$AVR_APP_PATH$$$
QUOTE := "
ADDITIONAL_DEPENDENCIES:=
OUTPUT_FILE_DEP:=
LIB_DEP:=
# Every subdirectory with source files must be described here
SUBDIRS :=
# Add inputs and outputs from these tool invocations to the build variables
C_SRCS += \
../adc.cpp \
../ArmControl.cpp \
../Misc.cpp \
../motorInfo.cpp \
../rotateStepper.cpp \
../Sabertooth.cpp \
../stepperInfo.cpp \
../usart_driver.c
PREPROCESSING_SRCS +=
ASM_SRCS +=
OBJS += \
adc.o \
ArmControl.o \
Misc.o \
motorInfo.o \
rotateStepper.o \
Sabertooth.o \
stepperInfo.o \
usart_driver.o
OBJS_AS_ARGS += \
adc.o \
ArmControl.o \
Misc.o \
motorInfo.o \
rotateStepper.o \
Sabertooth.o \
stepperInfo.o \
usart_driver.o
C_DEPS += \
adc.d \
ArmControl.d \
Misc.d \
motorInfo.d \
rotateStepper.d \
Sabertooth.d \
stepperInfo.d \
usart_driver.d
C_DEPS_AS_ARGS += \
adc.d \
ArmControl.d \
Misc.d \
motorInfo.d \
rotateStepper.d \
Sabertooth.d \
stepperInfo.d \
usart_driver.d
OUTPUT_FILE_PATH +=ArmControl.elf
OUTPUT_FILE_PATH_AS_ARGS +=ArmControl.elf
ADDITIONAL_DEPENDENCIES:=
OUTPUT_FILE_DEP:= ./makedep.mk
LIB_DEP+=
# AVR32/GNU C Compiler
./%.o: .././%.c
@echo Building file: $<
@echo Invoking: AVR8/GNU C Compiler : 4.8.1
$(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1051\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atxmega32d4 -c -std=gnu99 -Wl,-7u,vfprintf -lprintf_flt -lm -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
@echo Finished building: $<
./%.o: .././%.cpp
@echo Building file: $<
@echo Invoking: AVR8/GNU C Compiler : 4.8.1
$(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1051\avr8-gnu-toolchain\bin\avr-g++.exe$(QUOTE) -funsigned-char -funsigned-bitfields -DDEBUG -O1 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atxmega32d4 -c -Wl,-u,vfprintf -lprintf_flt -lm -v -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
@echo Finished building: $<
# AVR32/GNU Preprocessing Assembler
# AVR32/GNU Assembler
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
endif
# Add inputs and outputs from these tool invocations to the build variables
# All Target
all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES)
$(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP) $(LIB_DEP)
@echo Building target: $@
@echo Invoking: AVR8/GNU Linker : 4.8.1
$(QUOTE)C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1051\avr8-gnu-toolchain\bin\avr-g++.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="ArmControl.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=atxmega32d4
@echo Finished building target: $@
"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1051\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "ArmControl.elf" "ArmControl.hex"
"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1051\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "ArmControl.elf" "ArmControl.eep" || exit 0
"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1051\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "ArmControl.elf" > "ArmControl.lss"
"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1051\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "ArmControl.elf" "ArmControl.srec"
"C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 GCC\Native\3.4.1051\avr8-gnu-toolchain\bin\avr-size.exe" "ArmControl.elf"
# Other Targets
clean:
-$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES)
-$(RM) $(C_DEPS_AS_ARGS)
rm -rf "ArmControl.elf" "ArmControl.a" "ArmControl.hex" "ArmControl.lss" "ArmControl.eep" "ArmControl.map" "ArmControl.srec" "ArmControl.usersignatures"

View File

@@ -0,0 +1,42 @@
Misc.d Misc.o: .././Misc.cpp .././Misc.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iox32d4.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\xmega.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h \
.././XMegaMacros.h
.././Misc.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iox32d4.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\xmega.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h:
.././XMegaMacros.h:

View File

@@ -0,0 +1,68 @@
Sabertooth.d Sabertooth.o: .././Sabertooth.cpp .././Sabertooth.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iox32d4.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\xmega.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h \
.././usart_driver.h .././avr_compiler.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdbool.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdlib.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\pgmspace.h
.././Sabertooth.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iox32d4.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\xmega.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h:
.././usart_driver.h:
.././avr_compiler.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdbool.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdlib.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\pgmspace.h:

View File

@@ -0,0 +1,71 @@
adc.d adc.o: .././adc.cpp .././adc.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iox32d4.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\xmega.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\ctype.h \
.././usart_driver.h .././avr_compiler.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdbool.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdlib.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\pgmspace.h
.././adc.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iox32d4.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\xmega.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\ctype.h:
.././usart_driver.h:
.././avr_compiler.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdbool.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdlib.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\pgmspace.h:

View File

@@ -0,0 +1,20 @@
################################################################################
# Automatically-generated file. Do not edit or delete the file
################################################################################
adc.cpp
ArmControl.cpp
Misc.cpp
motorInfo.cpp
rotateStepper.cpp
Sabertooth.cpp
stepperInfo.cpp
usart_driver.c

View File

@@ -0,0 +1,3 @@
motorInfo.d motorInfo.o: .././motorInfo.cpp .././motorInfo.h
.././motorInfo.h:

View File

@@ -0,0 +1,80 @@
rotateStepper.d rotateStepper.o: .././rotateStepper.cpp \
.././rotateStepper.h .././XMegaMacros.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iox32d4.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\xmega.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdio.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdarg.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h \
.././stepperInfo.h .././avr_compiler.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdbool.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdlib.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\pgmspace.h \
.././usart_driver.h
.././rotateStepper.h:
.././XMegaMacros.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iox32d4.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\xmega.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdio.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdarg.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h:
.././stepperInfo.h:
.././avr_compiler.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdbool.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdlib.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\pgmspace.h:
.././usart_driver.h:

View File

@@ -0,0 +1,77 @@
stepperInfo.d stepperInfo.o: .././stepperInfo.cpp \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iox32d4.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\xmega.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdio.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdarg.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h \
.././stepperInfo.h .././XMegaMacros.h .././avr_compiler.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdbool.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdlib.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\pgmspace.h \
.././usart_driver.h
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iox32d4.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\xmega.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdio.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdarg.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h:
.././stepperInfo.h:
.././XMegaMacros.h:
.././avr_compiler.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdbool.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdlib.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\pgmspace.h:
.././usart_driver.h:

View File

@@ -0,0 +1,66 @@
usart_driver.d usart_driver.o: .././usart_driver.c .././usart_driver.h \
.././avr_compiler.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdbool.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdlib.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iox32d4.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\xmega.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\pgmspace.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h \
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h
.././usart_driver.h:
.././avr_compiler.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdint.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stdbool.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\stdlib.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\lib\gcc\avr\4.8.1\include\stddef.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\io.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\inttypes.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\iox32d4.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\portpins.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\common.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\version.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\xmega.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\fuse.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\lock.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\interrupt.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\avr\pgmspace.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\util\delay_basic.h:
c:\program\ files\ (x86)\atmel\atmel\ toolchain\avr8\ gcc\native\3.4.1051\avr8-gnu-toolchain\avr\include\math.h:

View File

@@ -0,0 +1,17 @@
/*
* CPPFile1.cpp
*
* Created: 5/27/2014 10:19:21 PM
* Author: Corwin
*/
#include "Misc.h"
#include <avr/io.h>
#include "XMegaMacros.h"
void DockArm(unsigned char dockState){
if(dockState == DOCK_ARM){
ERROR_SET();
}else if(dockState == UNDOCK_ARM){
}
}

View File

@@ -0,0 +1,19 @@
/*
* Misc.h
*
* Created: 5/27/2014 10:19:12 PM
* Author: Corwin
*/
#ifndef MISC_H_
#define MISC_H_
#define DOCK_ARM 1
#define UNDOCK_ARM 0
#include <avr/io.h>
void DockArm(unsigned char dockState);
#endif /* MISC_H_ */

View File

@@ -0,0 +1,114 @@
/*
* Sabertooth.cpp
*
* Created: 4/30/2014 1:08:16 PM
* Author: Corwin
*/
#include "Sabertooth.h"
#include <avr/io.h>
#include <util/delay.h>
Sabertooth::Sabertooth(USART_t *USART_SaberUsart, PORT_t * SaberPORT)
{
Sabertooth_USART = USART_SaberUsart; //Sets the private variable to the USART being used
Sabertooth_PORT = SaberPORT; //Sets the private variable for the PORT the USART is on
Sabertooth_PORT->DIRSET = PIN3_bm; //Sets the TX pin for the USART to an output
USART_Format_Set(Sabertooth_USART, USART_CHSIZE_8BIT_gc, USART_PMODE_DISABLED_gc, false); //Sets the Sabertooth USART to run in 8 bit data, no parity, and 1 stop bit,
USART_Baudrate_Set(Sabertooth_USART, 207 , 0); //Sets the Sabertooth baud rate to 9600 when running at 32Mhz system clock
USART_Tx_Enable(Sabertooth_USART); //Enable the USART transmit capabilities
_delay_ms(100); //Delay to let things settle
USART_PutChar(Sabertooth_USART, AUTOBAUD_BYTE); //Send the autobaud byte to get the sabertooth communicating
SendDriveCmd(14, 20); //Sets the communication watchdog on the sabertooth to (x*100ms) It's currently set to two seconds.
StopAll(); //Everything is now initialized, stop all motor movement to account for random noise or failed startups
}
void Sabertooth::DriveTest(){
int i;
for(i = 0; i < 64 ; i++){
SendDriveCmd(LEFT_FORWARD, i);
SendDriveCmd(RIGHT_FORWARD, i);
_delay_ms(10);
}
for( ; i > 0 ; i--){
SendDriveCmd(LEFT_FORWARD, i);
SendDriveCmd(RIGHT_FORWARD, i);
_delay_ms(10);
}
for(i = 0; i < 64 ; i++){
SendDriveCmd(LEFT_BACK, i);
SendDriveCmd(RIGHT_BACK, i);
_delay_ms(10);
}
for( ; i > 0 ; i--){
SendDriveCmd(LEFT_BACK, i);
SendDriveCmd(RIGHT_BACK, i);
_delay_ms(10);
}
}
//Left = lower act
//Right = upper act
void Sabertooth::ParsePacket(unsigned char left, unsigned char right){
unsigned char command_left = LEFT_FORWARD;
unsigned char value_left = 0;
unsigned char command_right = RIGHT_FORWARD;
unsigned char value_right = 0;
if(left == 127){
command_left = LEFT_FORWARD;
value_left = 0;
}else if(left < 127){
command_left = LEFT_BACK;
value_left = (127-left);
}else if(left > 127){
command_left = LEFT_FORWARD;
value_left = (left-127);
}
if(right == 127){
command_right = RIGHT_FORWARD;
value_right = 0;
}else if(right < 127){
command_right = RIGHT_BACK;
value_right = (127-right);
}else if(right > 127){
command_right = RIGHT_FORWARD;
value_right = (right-127);
}
SendDriveCmd(command_left, value_left);
SendDriveCmd(command_right, value_right);
}
void Sabertooth::StopAll(){
SendDriveCmd(LEFT_FORWARD, 0);
SendDriveCmd(RIGHT_FORWARD, 0);
}
unsigned char Sabertooth::SaberChecksum(unsigned char command, unsigned char value){
return ((SABERTOOTHADDRESS+command+value) & 127);
}
void Sabertooth::SendDriveCmd(char command, char value){
////////////////////////////////Testing.....
//while(!USART_IsTXDataRegisterEmpty(Sabertooth_USART)); //Necessary to make sure we don't overwrite data in the buffer
//USART_PutChar(Sabertooth_USART, AUTOBAUD_BYTE); //Send the autobaud byte to get the sabertooth communicating
////////////////////////////////
while(!USART_IsTXDataRegisterEmpty(Sabertooth_USART)); //Necessary to make sure we don't overwrite data in the buffer
USART_PutChar(Sabertooth_USART, SABERTOOTHADDRESS); //Sends the address to the sabertooth
while(!USART_IsTXDataRegisterEmpty(Sabertooth_USART));
USART_PutChar(Sabertooth_USART, command); //Sends the command to the sabertooth
while(!USART_IsTXDataRegisterEmpty(Sabertooth_USART));
USART_PutChar(Sabertooth_USART, value); //Sends the value or speed to the sabertooth
while(!USART_IsTXDataRegisterEmpty(Sabertooth_USART));
USART_PutChar(Sabertooth_USART, SaberChecksum(command, value)); //Send the checksum of all these values to the sabertooth
}

View File

@@ -0,0 +1,54 @@
/*
* Sabertooth.h
*
* Created: 4/30/2014 1:08:16 PM
* Author: Corwin
*/
#ifndef __SABERTOOTH_H__
#define __SABERTOOTH_H__
#define F_CPU 32000000UL
#define SABERTOOTHADDRESS 128
#define AUTOBAUD_BYTE 170
#define LEFT_FORWARD 0
#define LEFT_BACK 1
#define RIGHT_FORWARD 4
#define RIGHT_BACK 5
#include <avr/io.h>
#include <util/delay.h>
extern "C"{
#include "usart_driver.h"
#include "avr_compiler.h"
};
class Sabertooth
{
//variables
public:
protected:
private:
//functions
public:
Sabertooth(USART_t *USART_SaberUsart, PORT_t * SaberPORT);
void DriveTest();
void StopAll();
unsigned char SaberChecksum(unsigned char command, unsigned char value);
void ParsePacket(unsigned char left, unsigned char right);
protected:
private:
void SendDriveCmd(char command, char value);
Sabertooth( const Sabertooth &c );
Sabertooth& operator=( const Sabertooth &c );
USART_t *Sabertooth_USART;
PORT_t *Sabertooth_PORT;
}; //Sabertooth
#endif //__SABERTOOTH_H__

View File

@@ -0,0 +1,73 @@
/*
* XMegaMacros.h
*
* Created: 4/25/2014 5:51:17 AM
* Author: Nick
*/
#ifndef XMEGAMACROS_H_
#define XMEGAMACROS_H_
//Custom Defined Macros
#define STATUS1_SET(void) (PORTC.OUTSET = PIN6_bm)
#define STATUS1_CLR(void) (PORTC.OUTCLR = PIN6_bm)
#define STATUS2_SET(void) (PORTC.OUTSET = PIN5_bm)
#define STATUS2_CLR(void) (PORTC.OUTCLR = PIN5_bm)
#define ERROR_SET(void) (PORTC.OUTSET = PIN7_bm)
#define ERROR_CLR(void) (PORTC.OUTCLR = PIN7_bm)
//Motor 1 enable/disables
#define MD1_ENABLE(void) (PORTD.OUTCLR = PIN6_bm)
#define MD1_DISABLE(void) (PORTD.OUTSET = PIN6_bm)
#define MD2_ENABLE(void) (PORTD.OUTCLR = PIN2_bm)
#define MD2_DISABLE(void) (PORTD.OUTSET = PIN2_bm)
//Motor 1 M enable/disables
#define MD1_M0_SET(void) (PORTA.OUTSET = PIN5_bm)
#define MD1_M1_SET(void) (PORTA.OUTSET = PIN6_bm)
#define MD1_M2_SET(void) (PORTA.OUTSET = PIN7_bm)
#define MD1_M0_CLR(void) (PORTA.OUTCLR = PIN5_bm)
#define MD1_M1_CLR(void) (PORTA.OUTCLR = PIN6_bm)
#define MD1_M2_CLR(void) (PORTA.OUTCLR = PIN7_bm)
#define MD2_M0_SET(void) (PORTB.OUTSET = PIN0_bm)
#define MD2_M1_SET(void) (PORTB.OUTSET = PIN1_bm)
#define MD2_M2_SET(void) (PORTB.OUTSET = PIN2_bm)
#define MD2_M0_CLR(void) (PORTB.OUTCLR = PIN0_bm)
#define MD2_M1_CLR(void) (PORTB.OUTCLR = PIN1_bm)
#define MD2_M2_CLR(void) (PORTB.OUTCLR = PIN2_bm)
//Set direction macros
#define MD1_DIR_SET(void) (PORTD.OUTSET = PIN4_bm)
#define MD1_DIR_CLR(void) (PORTD.OUTCLR = PIN4_bm)
#define MD2_DIR_SET(void) (PORTD.OUTSET = PIN0_bm)
#define MD2_DIR_CLR(void) (PORTD.OUTCLR = PIN0_bm)
//Set step macros
#define MD1_STEP_SET(void) (PORTD.OUTSET = PIN5_bm)
#define MD1_STEP_CLR(void) (PORTD.OUTCLR = PIN5_bm)
#define MD2_STEP_SET(void) (PORTD.OUTSET = PIN1_bm)
#define MD2_STEP_CLR(void) (PORTD.OUTCLR = PIN1_bm)
//Limit switch macros
#define CHECK_GRIP_CLOSE(void) (!(PORTA.IN & PIN3_bm)) //Returns true if grip close
#define CHECK_GRIP_LIMIT(void) (PORTB.IN & PIN3_bm) //Returns true if a limit switch has been pressed
#define CHECK_CAL(void) (PORTA.IN & PIN2_bm) //Returns true if cal limit switch has been pressed
#define CHECK_ISROVING(void) (PORTA.IN & PIN4_bm) //Returns true if rover's status is 'roving
//Implied to be false during e-stop condition
//#define BASE_ROT_LIMIT
#endif /* XMEGAMACROS_H_ */

View File

@@ -0,0 +1,43 @@
/*
* adc.cpp
*
* Created: 5/6/2014 6:39:20 PM
* Author: Nick
*/
#include "adc.h"
uint8_t ReadSignatureByte(uint16_t Address)
{
NVM_CMD = NVM_CMD_READ_CALIB_ROW_gc;
uint8_t Result;
__asm__ ("lpm %0, Z\n" : "=r" (Result) : "z" (Address));
NVM_CMD = NVM_CMD_NO_OPERATION_gc;
return Result;
}
uint16_t ReadADC(uint8_t Channel, uint8_t ADCMode) // Mode = 1 for single ended, 0 for internal
{
if ((ADCA.CTRLA & ADC_ENABLE_bm) == 0)
{
ADCA.CTRLA = ADC_ENABLE_bm ; // Enable the ADC
ADCA.CTRLB = ADC_RESOLUTION_8BIT_gc; // Signed Mode
ADCA.REFCTRL = ADC_REFSEL_VCC_gc; // Internal 1v ref
ADCA.EVCTRL = 0; // no events
ADCA.PRESCALER = ADC_PRESCALER_DIV256_gc ;
ADCA.CALL = ReadSignatureByte(0x20) ; //ADC Calibration Byte 0
ADCA.CALH = ReadSignatureByte(0x21) ; //ADC Calibration Byte 1
_delay_us(400); // Wait at least 25 clocks
}
ADCA.CH0.CTRL = ADC_CH_GAIN_1X_gc | ADCMode ; // Gain = 1, Single Ended
ADCA.CH0.MUXCTRL = (Channel<<3);
ADCA.CH0.INTCTRL = 0 ; // No interrupt
for(uint8_t Waste = 0; Waste<2; Waste++)
{
ADCA.CH0.CTRL |= ADC_CH_START_bm; // Start conversion
while (ADCA.INTFLAGS==0) ; // Wait for complete
ADCA.INTFLAGS = ADCA.INTFLAGS ;
}
return ADCA.CH0RES ;
}

View File

@@ -0,0 +1,28 @@
/*
* adc.h
*
* Contains headers for ADC
*
* Created: 5/6/2014 6:36:17 PM
* Author: Nick
*/
#ifndef ADC_H_
#define ADC_H_
#define F_CPU 32000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <ctype.h>
extern "C"{
#include "usart_driver.h"
#include "avr_compiler.h"
};
uint8_t ReadSignatureByte(uint16_t Address);
uint16_t ReadADC(uint8_t Channel, uint8_t ADCMode); // Mode = 1 for single ended, 0 for internal
#endif /* ADC_H_ */

View File

@@ -0,0 +1,154 @@
/* This file has been prepared for Doxygen automatic documentation generation.*/
/*! \file *********************************************************************
*
* \brief This file implements some macros that makes the IAR C-compiler and
* avr-gcc work with the same code base for the AVR architecture.
*
* \par Documentation
* For comprehensive code documentation, supported compilers, compiler
* settings and supported devices see readme.html
*
* \author
* Atmel Corporation: http://www.atmel.com \n
* Support email: avr@atmel.com
*
* $Revision: 1694 $
* $Date: 2008-07-29 14:21:58 +0200 (ti, 29 jul 2008) $ \n
*
* Copyright (c) 2008, Atmel Corporation All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of ATMEL may not be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND
* SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
******************************************************************************/
#ifndef COMPILER_AVR_H
#define COMPILER_AVR_H
#ifndef F_CPU
/*! \brief Define default CPU frequency, if this is not already defined. */
#define F_CPU 2000000UL
#endif
#include <stdint.h>
#include <stdbool.h>
#include <stdlib.h>
/*! \brief This macro will protect the following code from interrupts. */
#define AVR_ENTER_CRITICAL_REGION( ) uint8_t volatile saved_sreg = SREG; \
cli();
/*! \brief This macro must always be used in conjunction with AVR_ENTER_CRITICAL_REGION
* so the interrupts are enabled again.
*/
#define AVR_LEAVE_CRITICAL_REGION( ) SREG = saved_sreg;
#if defined( __ICCAVR__ )
#include <inavr.h>
#include <ioavr.h>
#include <intrinsics.h>
#include <pgmspace.h>
#ifndef __HAS_ELPM__
#define _MEMATTR __flash
#else /* __HAS_ELPM__ */
#define _MEMATTR __farflash
#endif /* __HAS_ELPM__ */
/*! \brief Perform a delay of \c us microseconds.
*
* The macro F_CPU is supposed to be defined to a constant defining the CPU
* clock frequency (in Hertz).
*
* The maximal possible delay is 262.14 ms / F_CPU in MHz.
*
* \note For the IAR compiler, currently F_CPU must be a
* multiple of 1000000UL (1 MHz).
*/
#define delay_us( us ) ( __delay_cycles( ( F_CPU / 1000000UL ) * ( us ) ) )
/*! \brief Preprocessor magic.
*
* Some preprocessor magic to allow for a header file abstraction of
* interrupt service routine declarations for the IAR compiler. This
* requires the use of the C99 _Pragma() directive (rather than the
* old #pragma one that could not be used as a macro replacement), as
* well as two different levels of preprocessor concetanations in
* order to do both, assign the correct interrupt vector name, as well
* as construct a unique function name for the ISR.
*
* \note Do *NOT* try to reorder the macros below, as this will only
* work in the given order.
*/
#define PRAGMA(x) _Pragma( #x )
#define ISR(vec) PRAGMA( vector=vec ) __interrupt void handler_##vec(void)
#define sei( ) (__enable_interrupt( ))
#define cli( ) (__disable_interrupt( ))
/*! \brief Define the no operation macro. */
#define nop( ) (__no_operation())
/*! \brief Define the watchdog reset macro. */
#define watchdog_reset( ) (__watchdog_reset( ))
#define INLINE PRAGMA( inline=forced ) static
#define FLASH_DECLARE(x) _MEMATTR x
#define FLASH_STRING(x) ((_MEMATTR const char *)(x))
#define FLASH_STRING_T char const _MEMATTR *
#define FLASH_BYTE_ARRAY_T uint8_t const _MEMATTR *
#define PGM_READ_BYTE(x) *(x)
#define PGM_READ_WORD(x) *(x)
#define SHORTENUM /**/
#elif defined( __GNUC__ )
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
/*! \brief Define the delay_us macro for GCC. */
#define delay_us( us ) (_delay_us( us ))
#define INLINE static inline
/*! \brief Define the no operation macro. */
#define nop() do { __asm__ __volatile__ ("nop"); } while (0)
#define MAIN_TASK_PROLOGUE int
#define MAIN_TASK_EPILOGUE() return -1;
#define SHORTENUM __attribute__ ((packed))
#else
#error Compiler not supported.
#endif
#endif

View File

@@ -0,0 +1,43 @@
/*
* motorInfo.cpp
*
* Created: 5/7/2014 3:17:28 AM
* Author: Nick
*/
//LINEAR ACTUATOR REFERENCE DIRECTION
//- retract outer, retract inner
#include "motorInfo.h"
// default constructor
motorInfo::motorInfo() {
acceptableCount = 0;
acceptableCountMax = 5;
acceptableError = .2; //Needs calibration
slowRange = .75;
speed = 100;
enabled = 0;
//currentPos = 0;
} //motorInfo
// default destructor
motorInfo::~motorInfo() {
} //~motorInfo
void motorInfo::enable(){
enabled = 1;
}
void motorInfo::disable(){
enabled = 0;
}
void motorInfo::setDesired(float desired){
desiredPos = desired; //Mutate desiredPos
}

View File

@@ -0,0 +1,44 @@
/*
* motorInfo.h
*
* Created: 5/7/2014 3:17:28 AM
* Author: Nick
*/
#ifndef __MOTORINFO_H__
#define __MOTORINFO_H__
class motorInfo
{
//variables
public:
int acceptableCountMax;
int acceptableCount;
double acceptableError;
double slowRange;
int speed;
int enabled;
double currentPos; //Current pos in inches
volatile double desiredPos; //Desired pos in inches
protected:
private:
//functions
public:
motorInfo();
~motorInfo();
void enable();
void disable();
void setDesired(float desired);
protected:
private:
motorInfo( const motorInfo &c );
motorInfo& operator=( const motorInfo &c );
}; //motorInfo
#endif //__MOTORINFO_H__

View File

@@ -0,0 +1,114 @@
/*
* rotateStepper.cpp
*
* Created: 5/7/2014 7:12:28 AM
* Author: Nick
*/
#define F_CPU 32000000UL
#include "rotateStepper.h"
#include "XMegaMacros.h"
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#include "stepperInfo.h"
extern "C" {
#include "avr_compiler.h"
#include "usart_driver.h"
};
// default constructor
rotateStepper::rotateStepper() {
calSpan = 255; //TODO: Set to actual value
multiplier = -1; //Invalid (not set) state
currentAngle = 0; //It will have its reference based off of the 2nd limit switch,
//but the interface function will minus the amount to make 0 forward
} //rotateStepper
// default destructor
rotateStepper::~rotateStepper()
{
} //~rotateStepper
void rotateStepper::rotateBase(int desiredAngle){
//NEED INPUT CHEKCING
int zeroedAngle = desiredAngle + 36.09;
moveBase(zeroedAngle - currentAngle);
currentAngle = currentAngle + (zeroedAngle - currentAngle);
}
void rotateStepper::calibrateBase(){
bool calInProgress = true;
bool calFirstPress = false;
//bool calSecondPress = false;
int calButtonState;
int stepCount = 0;
MD2_DIR_CLR(); //Set arm to turn counter-clockwise
while (calInProgress){
while(!CHECK_ISROVING());
calButtonState = CHECK_CAL();
if(calButtonState && !calFirstPress){
calFirstPress = true;
MD2_DIR_SET(); //Sets arm to clockwise
_delay_ms(1200); //For gracefulness
}
if(calFirstPress == true)
++stepCount;
if(calFirstPress && stepCount > 150 && CHECK_CAL()){
calInProgress = false;
}
MD2_STEP_CLR();
_delay_us(600);
MD2_STEP_SET();
_delay_us(600);
}
currentAngle = 0;
multiplier = stepCount / calSpan;
_delay_ms(1200); //For gracefulness
}
//Multiplier is steps per degree
//Helper function
void rotateStepper::moveBase(int degreesToMove){
if (degreesToMove > 0)
MD2_DIR_CLR(); //Counter Clockwise
else
MD2_DIR_SET(); //Clockwise
int stepsToMove = abs(degreesToMove) * multiplier;
for(int i = 0; i < stepsToMove; ++i){
while(!CHECK_ISROVING()); //e-stop check
MD2_STEP_CLR();
_delay_us(400);
MD2_STEP_SET();
_delay_us(500);
}
}

View File

@@ -0,0 +1,43 @@
/*
* rotateStepper.h
*
* Created: 5/7/2014 7:12:28 AM
* Author: Nick
*/
#ifndef __ROTATESTEPPER_H__
#define __ROTATESTEPPER_H__
class rotateStepper
{
//variables
public:
double multiplier;
double calSpan;
int currentAngle;
volatile int desiredPos;
protected:
private:
//functions
public:
rotateStepper();
~rotateStepper();
void rotateBase(int desiredAngle);
void calibrateBase();
void moveBase(int degreesToMove); //Helper function
protected:
private:
rotateStepper( const rotateStepper &c );
rotateStepper& operator=( const rotateStepper &c );
}; //rotateStepper
#endif //__ROTATESTEPPER_H__

View File

@@ -0,0 +1,107 @@
/*
* stepperInfo.cpp
*
* Created: 5/7/2014 6:19:00 AM
* Author: Nick
*/
#define F_CPU 32000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
#include "stepperInfo.h"
extern "C" {
#include "avr_compiler.h"
#include "usart_driver.h"
};
extern void SendStringPC(char *stufftosend);
// default constructor
stepperInfo::stepperInfo() {
enabled = 0;
currentState = -1;
init = 1; //Init state (ignore first push)
} //stepperInfo
// default destructor
stepperInfo::~stepperInfo()
{
} //~stepperInfo
//Used for the gripping stepper
void stepperInfo::processCommand(int cmd){
if(!enabled)
return; //TODO: MAKE BETTER
if(cmd != GRIP && cmd != RELEASE)
return;
if(cmd == currentState)
return;
currentState = cmd;
//char sendBuffer[200];
//sprintf(sendBuffer, "Reached process command");
//SendStringPC(sendBuffer);
//GET DIRECTION
//CLR IS OUT
//SET is grip
//CLR is release
if(cmd == GRIP)
MD1_DIR_SET();
else if (cmd == RELEASE)
MD1_DIR_CLR();
if(!init){
for(int i = 0; i < 10000; ++i){
while(!CHECK_ISROVING()); //e-stop check
MD1_STEP_SET();
_delay_us(50);
MD1_STEP_CLR();
_delay_us(500);
}
}
else {
init = 0;
}
//MOVE UNTIL LIMIT OR GRIP
if(cmd == GRIP){
for(long i = 0; i < 185000; ++i){
while(!CHECK_ISROVING()); //e-stop check
MD1_STEP_SET();
_delay_us(20);
MD1_STEP_CLR();
_delay_us(40);
}
}else if(cmd == RELEASE){
while(!CHECK_GRIP_LIMIT()){
while(!CHECK_ISROVING()); //e-stop check
MD1_STEP_SET();
_delay_us(20);
MD1_STEP_CLR();
_delay_us(40);
}
}
enabled = 0;
}
void stepperInfo::enable(){
enabled = 1;
}

View File

@@ -0,0 +1,40 @@
/*
* stepperInfo.h
*
* Created: 5/7/2014 6:19:00 AM
* Author: Nick
*/
#include "XMegaMacros.h"
#ifndef __STEPPERINFO_H__
#define __STEPPERINFO_H__
#define GRIP 0
#define RELEASE 1
class stepperInfo
{
//variables
public:
int enabled;
int currentState;
int init;
volatile unsigned char desiredGripState;
protected:
private:
//functions
public:
stepperInfo();
~stepperInfo();
void processCommand(int cmd);
void enable();
protected:
private:
stepperInfo( const stepperInfo &c );
stepperInfo& operator=( const stepperInfo &c );
}; //stepperInfo
#endif //__STEPPERINFO_H__

View File

@@ -0,0 +1,320 @@
/* This file has been prepared for Doxygen automatic documentation generation.*/
/*! \file *********************************************************************
*
* \brief
* XMEGA USART driver source file.
*
* This file contains the function implementations the XMEGA interrupt
* and polled USART driver.
*
* The driver is not intended for size and/or speed critical code, since
* most functions are just a few lines of code, and the function call
* overhead would decrease code performance. The driver is intended for
* rapid prototyping and documentation purposes for getting started with
* the XMEGA ADC module.
*
* For size and/or speed critical code, it is recommended to copy the
* function contents directly into your application instead of making
* a function call.
*
* Some functions use the following construct:
* "some_register = ... | (some_parameter ? SOME_BIT_bm : 0) | ..."
* Although the use of the ternary operator ( if ? then : else ) is discouraged,
* in some occasions the operator makes it possible to write pretty clean and
* neat code. In this driver, the construct is used to set or not set a
* configuration bit based on a boolean input parameter, such as
* the "some_parameter" in the example above.
*
* \par Application note:
* AVR1307: Using the XMEGA USART
*
* \par Documentation
* For comprehensive code documentation, supported compilers, compiler
* settings and supported devices see readme.html
*
* \author
* Atmel Corporation: http://www.atmel.com \n
* Support email: avr@atmel.com
*
* $Revision: 1694 $
* $Date: 2008-07-29 14:21:58 +0200 (ti, 29 jul 2008) $ \n
*
* Copyright (c) 2008, Atmel Corporation All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of ATMEL may not be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND
* SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
#include "usart_driver.h"
/*! \brief Initializes buffer and selects what USART module to use.
*
* Initializes receive and transmit buffer and selects what USART module to use,
* and stores the data register empty interrupt level.
*
* \param usart_data The USART_data_t struct instance.
* \param usart The USART module.
* \param dreIntLevel Data register empty interrupt level.
*/
void USART_InterruptDriver_Initialize(USART_data_t * usart_data,
USART_t * usart,
USART_DREINTLVL_t dreIntLevel)
{
usart_data->usart = usart;
usart_data->dreIntLevel = dreIntLevel;
usart_data->buffer.RX_Tail = 0;
usart_data->buffer.RX_Head = 0;
usart_data->buffer.TX_Tail = 0;
usart_data->buffer.TX_Head = 0;
}
/*! \brief Set USART DRE interrupt level.
*
* Set the interrupt level on Data Register interrupt.
*
* \note Changing the DRE interrupt level in the interrupt driver while it is
* running will not change the DRE interrupt level in the USART before the
* DRE interrupt have been disabled and enabled again.
*
* \param usart_data The USART_data_t struct instance
* \param dreIntLevel Interrupt level of the DRE interrupt.
*/
void USART_InterruptDriver_DreInterruptLevel_Set(USART_data_t * usart_data,
USART_DREINTLVL_t dreIntLevel)
{
usart_data->dreIntLevel = dreIntLevel;
}
/*! \brief Test if there is data in the transmitter software buffer.
*
* This function can be used to test if there is free space in the transmitter
* software buffer.
*
* \param usart_data The USART_data_t struct instance.
*
* \retval true There is data in the receive buffer.
* \retval false The receive buffer is empty.
*/
bool USART_TXBuffer_FreeSpace(USART_data_t * usart_data)
{
/* Make copies to make sure that volatile access is specified. */
uint8_t tempHead = (usart_data->buffer.TX_Head + 1) & USART_TX_BUFFER_MASK;
uint8_t tempTail = usart_data->buffer.TX_Tail;
/* There are data left in the buffer unless Head and Tail are equal. */
return (tempHead != tempTail);
}
/*! \brief Put data (5-8 bit character).
*
* Stores data byte in TX software buffer and enables DRE interrupt if there
* is free space in the TX software buffer.
*
* \param usart_data The USART_data_t struct instance.
* \param data The data to send.
*/
bool USART_TXBuffer_PutByte(USART_data_t * usart_data, uint8_t data)
{
uint8_t tempCTRLA;
uint8_t tempTX_Head;
bool TXBuffer_FreeSpace;
USART_Buffer_t * TXbufPtr;
TXbufPtr = &usart_data->buffer;
TXBuffer_FreeSpace = USART_TXBuffer_FreeSpace(usart_data);
if(TXBuffer_FreeSpace)
{
tempTX_Head = TXbufPtr->TX_Head;
TXbufPtr->TX[tempTX_Head]= data;
/* Advance buffer head. */
TXbufPtr->TX_Head = (tempTX_Head + 1) & USART_TX_BUFFER_MASK;
/* Enable DRE interrupt. */
tempCTRLA = usart_data->usart->CTRLA;
tempCTRLA = (tempCTRLA & ~USART_DREINTLVL_gm) | usart_data->dreIntLevel;
usart_data->usart->CTRLA = tempCTRLA;
}
return TXBuffer_FreeSpace;
}
/*! \brief Test if there is data in the receive software buffer.
*
* This function can be used to test if there is data in the receive software
* buffer.
*
* \param usart_data The USART_data_t struct instance
*
* \retval true There is data in the receive buffer.
* \retval false The receive buffer is empty.
*/
bool USART_RXBufferData_Available(USART_data_t * usart_data)
{
/* Make copies to make sure that volatile access is specified. */
uint8_t tempHead = usart_data->buffer.RX_Head;
uint8_t tempTail = usart_data->buffer.RX_Tail;
/* There are data left in the buffer unless Head and Tail are equal. */
return (tempHead != tempTail);
}
/*! \brief Get received data (5-8 bit character).
*
* The function USART_RXBufferData_Available should be used before this
* function is used to ensure that data is available.
*
* Returns data from RX software buffer.
*
* \param usart_data The USART_data_t struct instance.
*
* \return Received data.
*/
uint8_t USART_RXBuffer_GetByte(USART_data_t * usart_data)
{
USART_Buffer_t * bufPtr;
uint8_t ans;
bufPtr = &usart_data->buffer;
ans = (bufPtr->RX[bufPtr->RX_Tail]);
/* Advance buffer tail. */
bufPtr->RX_Tail = (bufPtr->RX_Tail + 1) & USART_RX_BUFFER_MASK;
return ans;
}
/*! \brief RX Complete Interrupt Service Routine.
*
* RX Complete Interrupt Service Routine.
* Stores received data in RX software buffer.
*
* \param usart_data The USART_data_t struct instance.
*/
bool USART_RXComplete(USART_data_t * usart_data)
{
USART_Buffer_t * bufPtr;
bool ans;
bufPtr = &usart_data->buffer;
/* Advance buffer head. */
uint8_t tempRX_Head = (bufPtr->RX_Head + 1) & USART_RX_BUFFER_MASK;
/* Check for overflow. */
uint8_t tempRX_Tail = bufPtr->RX_Tail;
uint8_t data = usart_data->usart->DATA;
if (tempRX_Head == tempRX_Tail) {
ans = false;
}else{
ans = true;
usart_data->buffer.RX[usart_data->buffer.RX_Head] = data;
usart_data->buffer.RX_Head = tempRX_Head;
}
return ans;
}
/*! \brief Data Register Empty Interrupt Service Routine.
*
* Data Register Empty Interrupt Service Routine.
* Transmits one byte from TX software buffer. Disables DRE interrupt if buffer
* is empty. Argument is pointer to USART (USART_data_t).
*
* \param usart_data The USART_data_t struct instance.
*/
void USART_DataRegEmpty(USART_data_t * usart_data)
{
USART_Buffer_t * bufPtr;
bufPtr = &usart_data->buffer;
/* Check if all data is transmitted. */
uint8_t tempTX_Tail = usart_data->buffer.TX_Tail;
if (bufPtr->TX_Head == tempTX_Tail){
/* Disable DRE interrupts. */
uint8_t tempCTRLA = usart_data->usart->CTRLA;
tempCTRLA = (tempCTRLA & ~USART_DREINTLVL_gm) | USART_DREINTLVL_OFF_gc;
usart_data->usart->CTRLA = tempCTRLA;
}else{
/* Start transmitting. */
uint8_t data = bufPtr->TX[usart_data->buffer.TX_Tail];
usart_data->usart->DATA = data;
/* Advance buffer tail. */
bufPtr->TX_Tail = (bufPtr->TX_Tail + 1) & USART_TX_BUFFER_MASK;
}
}
/*! \brief Put data (9 bit character).
*
* Use the function USART_IsTXDataRegisterEmpty before using this function to
* put 9 bit character to the TX register.
*
* \param usart The USART module.
* \param data The data to send.
*/
void USART_NineBits_PutChar(USART_t * usart, uint16_t data)
{
if(data & 0x0100) {
usart->CTRLB |= USART_TXB8_bm;
}else {
usart->CTRLB &= ~USART_TXB8_bm;
}
usart->DATA = (data & 0x00FF);
}
/*! \brief Get received data (9 bit character).
*
* This function reads out the received 9 bit character (uint16_t).
* Use the function USART_IsRXComplete to check if anything is received.
*
* \param usart The USART module.
*
* \retval Received data.
*/
uint16_t USART_NineBits_GetChar(USART_t * usart)
{
if(usart->CTRLB & USART_RXB8_bm) {
return(0x0100 | usart->DATA);
}else {
return(usart->DATA);
}
}

View File

@@ -0,0 +1,306 @@
/* This file has been prepared for Doxygen automatic documentation generation.*/
/*! \file *********************************************************************
*
* \brief XMEGA USART driver header file.
*
* This file contains the function prototypes and enumerator definitions
* for various configuration parameters for the XMEGA USART driver.
*
* The driver is not intended for size and/or speed critical code, since
* most functions are just a few lines of code, and the function call
* overhead would decrease code performance. The driver is intended for
* rapid prototyping and documentation purposes for getting started with
* the XMEGA ADC module.
*
* For size and/or speed critical code, it is recommended to copy the
* function contents directly into your application instead of making
* a function call.
*
* \par Application note:
* AVR1307: Using the XMEGA USART
*
* \par Documentation
* For comprehensive code documentation, supported compilers, compiler
* settings and supported devices see readme.html
*
* \author
* Atmel Corporation: http://www.atmel.com \n
* Support email: avr@atmel.com
*
* $Revision: 1694 $
* $Date: 2008-07-29 14:21:58 +0200 (ti, 29 jul 2008) $ \n
*
* Copyright (c) 2008, Atmel Corporation All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name of ATMEL may not be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND
* SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
#ifndef USART_DRIVER_H
#define USART_DRIVER_H
#include "avr_compiler.h"
/* USART buffer defines. */
/* \brief Receive buffer size: 2,4,8,16,32,64,128 or 256 bytes. */
#define USART_RX_BUFFER_SIZE 4
/* \brief Transmit buffer size: 2,4,8,16,32,64,128 or 256 bytes */
#define USART_TX_BUFFER_SIZE 4
/* \brief Receive buffer mask. */
#define USART_RX_BUFFER_MASK ( USART_RX_BUFFER_SIZE - 1 )
/* \brief Transmit buffer mask. */
#define USART_TX_BUFFER_MASK ( USART_TX_BUFFER_SIZE - 1 )
#if ( USART_RX_BUFFER_SIZE & USART_RX_BUFFER_MASK )
#error RX buffer size is not a power of 2
#endif
#if ( USART_TX_BUFFER_SIZE & USART_TX_BUFFER_MASK )
#error TX buffer size is not a power of 2
#endif
/* \brief USART transmit and receive ring buffer. */
typedef struct USART_Buffer
{
/* \brief Receive buffer. */
volatile uint8_t RX[USART_RX_BUFFER_SIZE];
/* \brief Transmit buffer. */
volatile uint8_t TX[USART_TX_BUFFER_SIZE];
/* \brief Receive buffer head. */
volatile uint8_t RX_Head;
/* \brief Receive buffer tail. */
volatile uint8_t RX_Tail;
/* \brief Transmit buffer head. */
volatile uint8_t TX_Head;
/* \brief Transmit buffer tail. */
volatile uint8_t TX_Tail;
} USART_Buffer_t;
/*! \brief Struct used when interrupt driven driver is used.
*
* Struct containing pointer to a usart, a buffer and a location to store Data
* register interrupt level temporary.
*/
typedef struct Usart_and_buffer
{
/* \brief Pointer to USART module to use. */
USART_t * usart;
/* \brief Data register empty interrupt level. */
USART_DREINTLVL_t dreIntLevel;
/* \brief Data buffer. */
USART_Buffer_t buffer;
} USART_data_t;
/* Macros. */
/*! \brief Macro that sets the USART frame format.
*
* Sets the frame format, Frame Size, parity mode and number of stop bits.
*
* \param _usart Pointer to the USART module
* \param _charSize The character size. Use USART_CHSIZE_t type.
* \param _parityMode The parity Mode. Use USART_PMODE_t type.
* \param _twoStopBits Enable two stop bit mode. Use bool type.
*/
#define USART_Format_Set(_usart, _charSize, _parityMode, _twoStopBits) \
(_usart)->CTRLC = (uint8_t) _charSize | _parityMode | \
(_twoStopBits ? USART_SBMODE_bm : 0)
/*! \brief Set USART baud rate.
*
* Sets the USART's baud rate register.
*
* UBRR_Value : Value written to UBRR
* ScaleFactor : Time Base Generator Scale Factor
*
* Equation for calculation of BSEL value in asynchronous normal speed mode:
* If ScaleFactor >= 0
* BSEL = ((I/O clock frequency)/(2^(ScaleFactor)*16*Baudrate))-1
* If ScaleFactor < 0
* BSEL = (1/(2^(ScaleFactor)*16))*(((I/O clock frequency)/Baudrate)-1)
*
* \note See XMEGA manual for equations for calculation of BSEL value in other
* modes.
*
* \param _usart Pointer to the USART module.
* \param _bselValue Value to write to BSEL part of Baud control register.
* Use uint16_t type.
* \param _bScaleFactor USART baud rate scale factor.
* Use uint8_t type
*/
#define USART_Baudrate_Set(_usart, _bselValue, _bScaleFactor) \
(_usart)->BAUDCTRLA =(uint8_t)_bselValue; \
(_usart)->BAUDCTRLB =(_bScaleFactor << USART_BSCALE0_bp)|(_bselValue >> 8)
/*! \brief Enable USART receiver.
*
* \param _usart Pointer to the USART module
*/
#define USART_Rx_Enable(_usart) ((_usart)->CTRLB |= USART_RXEN_bm)
/*! \brief Disable USART receiver.
*
* \param _usart Pointer to the USART module.
*/
#define USART_Rx_Disable(_usart) ((_usart)->CTRLB &= ~USART_RXEN_bm)
/*! \brief Enable USART transmitter.
*
* \param _usart Pointer to the USART module.
*/
#define USART_Tx_Enable(_usart) ((_usart)->CTRLB |= USART_TXEN_bm)
/*! \brief Disable USART transmitter.
*
* \param _usart Pointer to the USART module.
*/
#define USART_Tx_Disable(_usart) ((_usart)->CTRLB &= ~USART_TXEN_bm)
/*! \brief Set USART RXD interrupt level.
*
* Sets the interrupt level on RX Complete interrupt.
*
* \param _usart Pointer to the USART module.
* \param _rxdIntLevel Interrupt level of the RXD interrupt.
* Use USART_RXCINTLVL_t type.
*/
#define USART_RxdInterruptLevel_Set(_usart, _rxdIntLevel) \
((_usart)->CTRLA = ((_usart)->CTRLA & ~USART_RXCINTLVL_gm) | _rxdIntLevel)
/*! \brief Set USART TXD interrupt level.
*
* Sets the interrupt level on TX Complete interrupt.
*
* \param _usart Pointer to the USART module.
* \param _txdIntLevel Interrupt level of the TXD interrupt.
* Use USART_TXCINTLVL_t type.
*/
#define USART_TxdInterruptLevel_Set(_usart, _txdIntLevel) \
(_usart)->CTRLA = ((_usart)->CTRLA & ~USART_TXCINTLVL_gm) | _txdIntLevel
/*! \brief Set USART DRE interrupt level.
*
* Sets the interrupt level on Data Register interrupt.
*
* \param _usart Pointer to the USART module.
* \param _dreIntLevel Interrupt level of the DRE interrupt.
* Use USART_DREINTLVL_t type.
*/
#define USART_DreInterruptLevel_Set(_usart, _dreIntLevel) \
(_usart)->CTRLA = ((_usart)->CTRLA & ~USART_DREINTLVL_gm) | _dreIntLevel
/*! \brief Set the mode the USART run in.
*
* Set the mode the USART run in. The default mode is asynchronous mode.
*
* \param _usart Pointer to the USART module register section.
* \param _usartMode Selects the USART mode. Use USART_CMODE_t type.
*
* USART modes:
* - 0x0 : Asynchronous mode.
* - 0x1 : Synchronous mode.
* - 0x2 : IrDA mode.
* - 0x3 : Master SPI mode.
*/
#define USART_SetMode(_usart, _usartMode) \
((_usart)->CTRLC = ((_usart)->CTRLC & (~USART_CMODE_gm)) | _usartMode)
/*! \brief Check if data register empty flag is set.
*
* \param _usart The USART module.
*/
#define USART_IsTXDataRegisterEmpty(_usart) (((_usart)->STATUS & USART_DREIF_bm) != 0)
/*! \brief Put data (5-8 bit character).
*
* Use the macro USART_IsTXDataRegisterEmpty before using this function to
* put data to the TX register.
*
* \param _usart The USART module.
* \param _data The data to send.
*/
#define USART_PutChar(_usart, _data) ((_usart)->DATA = _data)
/*! \brief Checks if the RX complete interrupt flag is set.
*
* Checks if the RX complete interrupt flag is set.
*
* \param _usart The USART module.
*/
#define USART_IsRXComplete(_usart) (((_usart)->STATUS & USART_RXCIF_bm) != 0)
/*! \brief Get received data (5-8 bit character).
*
* This macro reads out the RX register.
* Use the macro USART_RX_Complete to check if anything is received.
*
* \param _usart The USART module.
*
* \retval Received data.
*/
#define USART_GetChar(_usart) ((_usart)->DATA)
/* Functions for interrupt driven driver. */
void USART_InterruptDriver_Initialize(USART_data_t * usart_data,
USART_t * usart,
USART_DREINTLVL_t dreIntLevel );
void USART_InterruptDriver_DreInterruptLevel_Set(USART_data_t * usart_data,
USART_DREINTLVL_t dreIntLevel);
bool USART_TXBuffer_FreeSpace(USART_data_t * usart_data);
bool USART_TXBuffer_PutByte(USART_data_t * usart_data, uint8_t data);
bool USART_RXBufferData_Available(USART_data_t * usart_data);
uint8_t USART_RXBuffer_GetByte(USART_data_t * usart_data);
bool USART_RXComplete(USART_data_t * usart_data);
void USART_DataRegEmpty(USART_data_t * usart_data);
/* Functions for polled driver. */
void USART_NineBits_PutChar(USART_t * usart, uint16_t data);
uint16_t USART_NineBits_GetChar(USART_t * usart);
#endif

View File

@@ -0,0 +1,3 @@
Firmware for all final boards should go here.
All firmware developed using Atmel Studio 6.2.